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
我知道顺便说一下我没有使用整数。
提前致谢!
答案 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)
input
,则需要将其作为int
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")`