Python条件一个或另一个但不是两个

时间:2015-09-24 04:05:01

标签: python if-statement conditional

我正在尝试在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。如果有人可以帮助我指出正确的方向,那么它将会非常适合。

4 个答案:

答案 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:
相关问题