我想知道在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 False
或retry < 5
周围放置括号。
我想知道为什么初始条件失败了,所以在终端我尝试了组合,我也尝试了以下内容:
In [48]: False & retry
Out[48]: 0
这是否意味着在我的初始条件下,这部分条件首先得到解释?
Python如何处理这种情况?从左到右 ?
它会解释valid_rx is False
,然后解释False & retry
,然后解释retry < 5
吗?
实际上我本来期望一个断言的条件会被丢弃以进行进一步的评估(即valid_rx is False
的评估会阻止False & retry
被解释)这会使我的初始条件正确...
如果有人有明确的解释(或参考),我会感兴趣。
答案 0 :(得分:3)
&
不被视为 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
使用not
,and
。据说Python是“可运行的伪代码”。