我正在尝试在python中编译一个if语句,它检查两个变量以查看它们是否为< = .05。现在如果两个变量都是True,我只想让代码传递/继续,但如果只有一个变量为True,那么我希望代码能够做一些事情。例如:
ht1 = 0.04
ht2 = 0.03
if (ht1 <= 0.05) or (ht2 <= 0.05):
# do something
else:
pass
我不认为这个例子会按照我想要的方式工作,因为我对OR的理解是1条件返回True或两个条件都返回True。如果有人可以帮助我指出正确的方向,那么它将会非常适合。
答案 0 :(得分:9)
你想要的是一个&#34;异或“&#34;”,在这种情况下可以表示为“不等于”&#39;或者&#39;不是&#39;关系:
if (ht <= 0.05) is not (ht2 <= 0.05):
这样做的方式是if
只有在其中一个True
而另一个是False
时才会成功。如果他们同时True
或同时False
,那么它会转到else
区块。
答案 1 :(得分:7)
由于关系运算符总是产生bool
,只需检查它们是否是不同的值。
if (ht1 <= 0.05) != (ht2 <= 0.05): # Check if only one is true
...
答案 2 :(得分:3)
这种方法在技术上较慢,因为它必须计算两次比较,但我发现它稍微更具可读性。您的里程可能会有所不同。
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.
答案 3 :(得分:0)
另一种方法:
if max(ht1, ht2) > 0.05 and min(ht1, ht2) <= 0.05: