Skip to main content
 首页 » 编程设计

python之在 'Or' 语句中执行 'If' 操作的正确方法是什么之Python

2025年05月04日16虾米哥

我有一个 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获取更多信息。