2016-12-24 287 views
-2

我遇到了让while循环工作的问题。我使用next = y命令来启动程序,但是在我编写的结尾(next == y)再次运行main函数时,这个位似乎不起作用。即使我输入'n'或任何不是'y'的东西,函数仍然会重复。我的想法是,最初的next = y覆盖了所有内容,但我似乎无法删除此代码,否则代码只会运行并且没有任何代码运行。为什么我的while循环不起作用

next = "y" 



def main(): 

      operator = input("Select a function and press enter (+, - , *, /) ") 


      if(operator != "+" and operator != "-" and operator != "*"and operator >!= "/"): 
     print(input("You must enter a valid operator ")) 
         else: 
     val1 = int(input("Select value 1 ")) 
     val2 = int(input("Select value 2 ")) 

    if(operator == "+"): 
     print(add(val1, val2)) 
    elif(operator == "-"): 
     print(sub(val1, val2)) 
    elif(operator == "*"): 
     print(mult(val1, val2)) 
    else: 
     print(div(val1, val2)) 

next = (input("Would you like to do another calculation? (y/n): ")) 

while(next == "y"): 
    main() 

我认为这是一个简单的修复,但我不知道如何做到这一点。

+6

能否请你纠正代码段的缩进?很难理解“main”和“outside”之外的内容。 – FlipTack

回答

0

声明

next = (input("Would you like to do another calculation? (y/n): ")) 

需要在while循环内的举动。事实上,它只被设置一次。 (你应该只看到提示一次。)

1

接下来是你的主函数中的局部变量。您可以将其设置为全局(坏习惯),也可以在main函数的末尾添加return next。那么你需要做这样的事情在你的循环:

while next == 'y': 
    next = main() 
+0

我没有在'main'的主体中看到'next'。 – sfjac

+1

@sfjac我承认一些关于缩进的东西,不可否认,这显然是关闭的。 –

+0

主内部的缩进确实令人惊叹...... :) – sfjac

1

首先,你应该注意到,next是一个变量名一个糟糕的选择,因为它覆盖内置函数next - 考虑像user_choice等。

总之,这里是如何你的代码的结构也许应该是:

def main(): 
    # Do calculations 

choice = 'y' 
while choice == 'y': 
    main() 
    choice = input("Would you like do another calculation? (y/n): ") 

每次main()完成后,用户被要求输入y/n,循环结束。如果选择是y,它会再次运行 - 否则,它将退出循环。

0

接下来是Python中的内置函数。首先选择一个正确的变量名是一个好习惯。您可以更改另一个名称旁边的变量名称。

while(next == "y"): 
    main() 
    **next = (input("Would you like to do another calculation? (y/n): "))** 

所以,当你运行程序第一次:

第1步:选择一个功能,然后按回车

步骤2,如果你问用户的选择,而循环后,你的程序将工作做好:选择值1

步骤3:选择值2

步骤4:打印的功能

第5步:你愿意做的另一个计算

第6步:如果y,则转到步骤1,否则退出程序