Python - While循环进入无限循环。我究竟做错了什么?

时间:2016-04-06 07:29:03

标签: python

我写了我的代码,有人告诉我像这样做循环,但它不对。它进入了一个无限循环,作为一个新手,我不确定是什么错。我查看了其他搜索,并且不了解他们如何修复代码,因为它们完全不同。不要将此标记为副本,因为它阻止我直接为我的代码获取答案。我是新手,我会把你所有的废话都带走。谢谢

print ("enter a number 1 - 2: ")
userin = input()

while userin != 1 or userin != 2:
    print ("Enter a number that is 1 or 2")

    if userin == "1":
        print ("\n One")
    elif userin == "2":
        print ("\n One", "\n Two")
    else:
        print ("Enter a number that is 1 or 2")

这是没有while循环的原始代码:

print ("Enter a number (2 - 3): ")
userin = input()


if userin == "2": 
    print("\n One","\n Two") 
elif userin == "3":
    print("\n One", "\n Two", "\Three")
else: print("Invalid. Enter a number2 -3!") 

4 个答案:

答案 0 :(得分:3)

测试userin != "1" or userin != "2"始终为真。如果用户输入1,则第二部分为真。如果用户输入2,则第一部分为真。所以,循环永远不会结束。尝试使用and代替or

答案 1 :(得分:1)

您的代码中的问题是您只需在最开始处获取一次用户输入,并且while循环将继续基于该输入运行,从而导致无限循环。基本上,你再也不会接受输入了

尝试使用以下代码:

print ("enter a number 1 - 2: ")
userin = input()

while userin != "1" and userin != "2":
    print ("Enter a number that is 1 or 2")
    userin = input()

if userin == "1":
    print ("One\n")
elif userin == "2":
    print ("Two\n")

说明:最初您从用户那里获取输入。并且启动while循环时检查输入是否既不是1也不是2,即如果userin既不是1也不是2,则循环仅进行。此外,如果既不是1也不是2,则要求用户重新输入一个数字。然后使用userin = input()再次输入 一旦用户输入1或2中的任何一个,循环退出并且" One"或"两个"根据用户的最终输入打印。

答案 2 :(得分:0)

# Please try this...
ip_list = [1, 2]  # input list
print ("enter a number 1 - 2: ")
userin = input()

while userin not in ip_list:
    print ("Enter a number that is 1 or 2")
    userin = input()


>>> while userin not in ip_list:
...     print("Enter a number that is 1 - 2!")
...     userin = input()
...
Enter a number that is 1 - 2! 
5
Enter a number that is 1 - 2!
6
Enter a number that is 1 - 2!
-1
Enter a number that is 1 - 2!
0
Enter a number that is 1 - 2!
9
Enter a number that is 1 - 2!
1 <===== Here it exits while loop

答案 3 :(得分:0)

你有几个问题。首先,userin何时等于1 等于2?决不!您需要使用userin != 1 and userin != 2。但是,这也不是正确的,因为您正在将字符串与整数进行比较。您看到input()会返回一个字符串,但您要将其与12进行比较。您应该使用userin != '1' and userin != '2',以便将字符串与字符串进行比较。最后一个问题是,您要继续将userin12进行比较,但是您不会在原始时间之后重新定义它。您需要在input()循环中添加while次调用。你的最终代码:

print ("enter a number 1 - 2: ")
userin = input()

while userin != '1' and userin != '2':
    print ("Enter a number that is 1 or 2")
    userin = input()
    if userin == "1":
        print ("\n One")
    elif userin == "2":
        print ("\n One", "\n Two")

您的else是多余的,因为userin既不是1也不是2while循环会再次运行并打印出来。