我知道有很多关于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,它将与循环一起使用非常感谢
答案 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”: