问题是您的代码对 Python 来说是这样的:
if (number is "1") or "0" or "2":
并且由于任何非空字符串True
的计算结果为 ,它总是True
。
做你想做的事,一个很好的语法是:
if number in {"1", "0", "2"}:
请注意我在这里使用了一个集合 - 虽然在这种情况下(只有三个值)并不重要,但检查一个集合比一个列表更快,因为一个集合的成员资格测试是 O(1) 而不是 O (n)。
这只是写这个更好,更容易:
if number == "1" or number == "0" or number == "2":
这就是你想要的。
请注意,在比较值时,您应该始终使用==
not is
-is
是身份检查(两个值是同一个对象)。通常,您应该使用oris
之类的东西。is True
is None
如果你想把它当作一个数字来处理,你可以这样做:
try:
value = int(number)
except ValueError:
value = None
if value is not None and 0 <= value <= 2:
...
在您想要与大量数字进行比较的情况下,这可能更有用。请注意我使用了 Python 有用的比较链接(0 <= value <= 2
而不是0 <= value and value <= 2
)。