困惑关于Python OR运算符

时间:2014-10-28 13:51:16

标签: python boolean operator-keyword

我知道有很多关于OR运算符的文档,但是我无法在Python代码中使用它。我是初学者,所以很多python语法/方法对我来说都是新的。

def getDecision():
x = input()
while x != ("a" or "b"):
    print("Please input \"A\" or \"B\"")
    x = input()
return x

目前它只检查x是否不等于A,它似乎忽略B. 这与其他问题不同,好像我写了

while (x != "a") or (x != "b")

如果在

中键入A或B,它将与循环一起使用

非常感谢

3 个答案:

答案 0 :(得分:2)

这应该是:

while x!="a" and x!="b":

while x not in ("a", "b"):

第一个是您的陈述的logical equivalence,因为~(a or b) == ~a and ~b。第二种是更多Pythonic的写法,也更容易理解。

答案 1 :(得分:2)

问题来自这部分:

x != ("a" or "b")

表达式(" a"或" b")将始终评估为" a"因为它的作用是首先检查" a" (第一个变量)是True / False(在python中,空字符串被评估为False,其余为True)。因为" a"将被评估为True,它甚至不会检查第二个变量,只会返回" a"。此外,该表达式特别检查任何给定变量是否评估为True并返回第一个一个(在您的情况下" a")。

解决方案是改为

while x not in ('a', 'b')

正如其他用户所说。

答案 2 :(得分:0)

如果你想让while循环在函数中,那么你需要缩进它。 你也应该使用:

而x不在('a','b') 要么 而x!=“a”和x!=“b”:

相关问题