为什么我的while循环不起作用

时间:2016-12-24 22:22:46

标签: python

我遇到了让while循环工作的问题。我使用next = y命令来启动程序,但是在我编写的末尾(next == y)再次运行main函数时,这个位似乎不起作用。即使我输入' n'或任何不是' y',该功能仍然重复。我的想法是,最初的next = y over骑了所有东西,但我似乎无法删除它,否则代码只会运行并且在没有运行的情况下中断。

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()

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

首先,您应该注意async def对于变量名称来说是一个糟糕的选择,因为它会覆盖内置函数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,则会再次运行 - 否则,它将退出循环。

答案 2 :(得分:0)

声明

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

需要在while循环中移动。实际上,它只被设置一次。 (你应该只看到提示一次。)

答案 3 :(得分:0)

Next是Python中的内置函数。首先选择正确的变量名称是一种很好的做法。您可以在另一个名称旁边更改变量名称。如果您在while循环后询问用户的选择,您的程序将运行良好:

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

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

步骤1:选择一项功能,然后按Enter键

第2步:选择值1

第3步:选择值2

步骤4:打印功能值

第5步:您想再做一次计算

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