Pythonic写条件的方式

时间:2017-09-01 08:38:59

标签: python conditional-statements

我想知道在Python中编写条件的规则是什么。 我对Python很陌生。我来自C,我习惯于围绕条件设置括号,这似乎不是Python中的规则。

我试图在while循环上设置一个条件而我遇到了一个问题,这是我的初始代码:

valid_rx = False
retry = 0

while valid_rx is False & retry < 5:
    # the rest of the code is not particularly relevant, if a failure occurs, I relaunch my attempt and increment retry

它从未执行过剩下的代码。

我认为我的情况从来都不是真的,所以我尝试了几种组合,并在valid_rx is Falseretry < 5周围放置括号。 我想知道为什么初始条件失败了,所以在终端我尝试了组合,我也尝试了以下内容:

In [48]: False & retry
Out[48]: 0

这是否意味着在我的初始条件下,这部分条件首先得到解释? Python如何处理这种情况?从左到右 ? 它会解释valid_rx is False,然后解释False & retry,然后解释retry < 5吗? 实际上我本来期望一个断言的条件会被丢弃以进行进一步的评估(即valid_rx is False的评估会阻止False & retry被解释)这会使我的初始条件正确...

如果有人有明确的解释(或参考),我会感兴趣。

3 个答案:

答案 0 :(得分:3)

在Python中,

&不被视为 AND 条件。您必须使用and

valid_rx = False
retry = 0

while valid_rx is False and retry < 5:
    print("hello")

答案 1 :(得分:3)

您应该使用逻辑短路运算符and,而不是按位运算符&

另请注意,布尔值valid_rx可以直接在您的条件中使用;更简洁:

while not valid_rx and retry < 5:
    ...

答案 2 :(得分:0)

>>> valid_rx = False
>>> retry = 0
>>> not valid_rs and retry < 5

使用notand。据说Python是“可运行的伪代码”。