无法绕过"!="运营商和"和" &安培; "或"关键字

时间:2017-01-31 21:15:41

标签: python python-3.x

所以说,在一个循环中......

var = input()
while var =! "A" and var =! "B":
    var = input()

我希望它循环直到用户输入 A B.现在从逻辑上讲,使用"或"更有意义。而不是"和"。但"和"似乎是有效的。我试图绕过原因。对于"和"我想逐步得到这个逻辑。和"或"关键字。

所以说用户输入" C"。 while循环将检查var不等于A,这是真的,然后检查var是否不等于B,这也是真的。所以不会运行循环吗?

现在使用"或"相反,它将检查var是否不是A然后检查var是否不是B,如果它满足任一要求,它将运行循环。所以不会"或者#34;应该工作的那个?

2 个答案:

答案 0 :(得分:0)

首先,你当然是!=,而不是=!。其次,阅读de Morgan的法律(https://en.wikipedia.org/wiki/De_Morgan's_laws)。

至于你的例子,让我们考虑var == 'A'时会发生什么。从那里我们有你的循环条件,它指出var != 'A' and var != 'B'。从那里,我们有'A' != 'A' and 'A' != 'B'。因此,我们有False and True,它提供False并且循环不会运行。

如果我们有or而不是and,我们会得到:False or True,它会给True并且程序会循环播放。

否定可能会让你感到困惑。 Per de Morgan的法律var != 'A' and var != 'B'相当于!(var == 'A' or var == 'B')

答案 1 :(得分:0)

你说的是真的。如果输入一个从A和B输出的值C,则循环将运行。如果你想运行循环,如果A或B是输入,那么你应该使用或。