Python: 我陷入了死循环

Python: I fell in an infinite loop

问题描述如下:

Example output:

Calculator
Give the first number: 100
Give the second number: 25
(1) +
(2) -
(3) *
(4) /
(5)Change numbers
(6)Quit
Current numbers: 100 25
Please select something (1-6): 5
Give the first number: 10
Give the second number: 30
(1) +
(2) -
(3) *
(4) /
(5)Change numbers
(6)Quit
Current numbers: 10 30
Please select something (1-6): 1
The result is: 40
(1) +
(2) -
(3) *
(4) /
(5)Change numbers
(6)Quit
Current numbers: 10 30
Please select something (1-6): 6
Thank you!

我的解决方案是:

print("Calculator")

var1 = input("Give the first number: ")
var2 = input("Give the second number: ")

print("(1) +\n(2) -\n(3) *\n(4) /\n(5)Change numbers\n(6)Quit")
print("Current numbers: " + var1 + " " + var2)

opcion = input("Please select something (1-6): ")

while (opcion != "6"):
    if (opcion == "1"):
        var3 = int(var1) + int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "2"):
        var3 = int(var1) - int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "3"):
        var3 = int(var1) * int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "4"):
        var3 = int(var1) / int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "5"):
        var1 = input("Give the first number: ")
        var2 = input("Give the second number: ")
        opcion = input("Please select something (1-6): ")
    else:
        print("Selection was not correct.")

print("Thank you!")

但在"elif (opcion == "5"):" 自动校正器说我陷入了一个无限循环,我在输入两个新数字后尝试中断,但它完全退出了 while 循环, 有任何想法吗?谢谢。

您的代码有问题:

您仅在 while 循环之外分配 opcion,之后您仅在 opcion == "5".

时修改 opcion

当你给出 opcion = "1" 时会发生什么,它会添加并给你答案,然后检查 while 语句何时为真,因为 opcion 没有改变。然后再次添加,再次检查,goes oooooooooooon,这样就产生了死循环。

修改:

print("Calculator")

var1 = input("Give the first number: ")
var2 = input("Give the second number: ")

print("(1) +\n(2) -\n(3) *\n(4) /\n(5)Change numbers\n(6)Quit")
print("Current numbers: " + var1 + " " + var2)

while True:
    opcion = input("Please select something (1-6): ")
    if (opcion == "1"):
        var3 = int(var1) + int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "2"):
        var3 = int(var1) - int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "3"):
        var3 = int(var1) * int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "4"):
        var3 = int(var1) / int(var2)
        print("The result is: " + str(var3))
    elif (opcion == "5"):
        var1 = input("Give the first number: ")
        var2 = input("Give the second number: ")
    elif (opcion == "6"):
        break
    else:
        print("Selection was not correct.")

print("Thank you!")

更多改进方案:

import operator
print("Calculator")

var1 = input("Give the first number: ")
var2 = input("Give the second number: ")

print("(1) +\n(2) -\n(3) *\n(4) /\n(5)Change numbers\n(6)Quit")
print("Current numbers: " + var1 + " " + var2)
operations={"1":operator.add,"2":operator.sub,"3":operator.mul,"4":operator.div}
while True:
    option = input("Please select something (1-6): ")
    print option
    if option in operations:
        var3=operations[option](int(var1),int(var2))        
        print "value"+str( var3)
        continue
    if (option == "6"):
        print "quiting"
        break
    elif (option == "5"):
        var1 = input("Give the first number: ")
        var2 = input("Give the second number: ")
    else:
        print("Selection was not correct.")

print("Thank you!")

注:

在正确的英文术语中应该是 options 而不是 opcion 但这真的没关系 :P