使用或在while循环中(Python)

时间:2014-01-20 21:52:44

标签: python loops while-loop logic

variable1 = 0
while variable1 != "1" or variable1 != "2" or variable1 != "3":
    variable1 = input ("Enter variable1: ")
print("Succes")

即使变量被赋值为1或2或3,我的代码也永远不会离开while循环。 我在这里错过了什么或做错了吗?我从来没有读过任何关于Python的文档,或者语句在while循环中不起作用。根据命题演算,这应该是正确的,因为True或False或False = True

我知道顺便说一下我没有使用整数。

提前致谢!

5 个答案:

答案 0 :(得分:4)

你的while循环的条件总是如此。为了使其为假,variable1必须等于"1""2""3",这对于单个字符串是不可能的。

>>> variable1 == "1"
>>>
>>> variable1 != "1"
False
>>> variable1 != "2"
True
>>> variable1 != "3"
True
>>> False or True or True
True # So the loop will continue execution

如果variable1等于"1""2""3",您是否希望退出while循环?

while not (variable1 == "1" or variable1 == "2" or variable1 == "3"):

如果variable1等于"1""2""3",那么想象一下条件将如何解决是有用的:

while not (True or False or False):

while not (True):

while False: # Exit

答案 1 :(得分:4)

您的while循环的条件总是评估为True,因为variable1始终不等于"1"或不等于{{1} }}

相反,您需要在此处使用not in

"2"

但是,根据您的代码结构判断,我认为您希望variable1 = 0 while variable1 not in ("1", "2", "3"): varible1 = input("Enter variable1: ") print("Succes") 是整数,而不是字符串。

如果是这样,那么你可以在Python 3.x上使用它:

variable1

或者,如果您使用的是Python 2.x,则可以使用:

variable1 = 0
while variable1 not in (1, 2, 3):
    varible1 = int(input("Enter variable1: "))
print("Succes")

答案 2 :(得分:1)

  1. 您需要更新while循环中的变量
  2. 如果您使用input,则需要将其作为int
  3. 进行比较
    variable1 = 0
    while variable1 not in {1,2,3}:
        variable1 = input("Enter variable1: ")
    
    print("Succes")
    

答案 3 :(得分:0)

而不是'或',你应该使用'和'。只要输入不是“1”并且它不是“2”并且它不是“3”,您想要继续询问输入。

答案 4 :(得分:0)

是的,使用and的工作原理是:

variable1 = 0
while variable1 != "1" and variable1 != "2" and variable1 != "3":
    variable1 = input("Enter variable1: ")
print("Success")`