我有一个 If 语句,它的行为不符合我的预期。
这是我的例子:
if not userTime[-2].upper() == "X" or not userTime[-2].upper() == "Z":
raise ValueError("not entered an X or a Z")
else:
notValid = False
我的输入总是导致 userTime[-2] 总是大写的“Z”
将 userTime[-2].upper() 打印到屏幕上显示为“Z”,但它仍然会引发异常。
我无法让它命中此“if”语句的 else 部分,现在我想知道是否遗漏了什么
请您参考如下方法:
a or b 的反义词不是not a or not b,而是not a and not b。尝试:
if not userTime[-2].upper() == "X" and not userTime[-2].upper() == "Z":
或者,等价地,
if userTime[-2].upper() != "X" and userTime[-2].upper() != "Z":
或者,完全避免复杂 bool 表达式的问题,
if userTime[-2].upper() not in ("X", "Z"):
否定 bool 表达式有点违反直觉。咨询De Morgan's laws获取更多信息。
