Python 条件之一但不是两者

Python conditional one or the other but not both

我正在尝试在 python 中编译一个 if 语句,它检查两个变量以查看它们是否 <= .05。现在,如果两个变量都为真,我只希望代码为 pass/continue,但如果只有一个变量为真,那么我希望代码执行某些操作。例如:

ht1 = 0.04
ht2 = 0.03

if (ht1 <= 0.05) or (ht2 <= 0.05):
    # do something
else:
    pass

我不认为这个例子会按照我想要的方式工作,因为我对 OR 的理解是 1 个条件 returns True 或两个条件 return True。如果有人能帮我指出正确的方向,将不胜感激。

由于关系运算符总是导致 bool,只需检查它们是否是不同的值。

if (ht1 <= 0.05) != (ht2 <= 0.05): # Check if only one is true
   ...

你想要的叫做"exclusive-OR",在这种情况下可以表示为'not-equal'或'is not'关系:

if (ht <= 0.05) is not (ht2 <= 0.05):

其工作方式是 if 仅当其中之一为 True 且另一个为 False 时才会成功。如果它们都是 True 或都是 False 那么它将转到 else 块。

另一种方法:

if  max(ht1, ht2) > 0.05 and min(ht1, ht2) <= 0.05:

这种方法在技术上比较慢,因为它必须计算两次比较,但我发现它的可读性稍微好一些。您的里程可能会有所不同。

ht1 = 0.04
ht2 = 0.03

if (ht1 <= 0.05) and (ht2 <= 0.05):
   pass
elif (ht1 <= 0.05) or (ht2 <= 0.05):
    # do something.