2017-09-01 68 views
1

我在想什麼是在Python中編寫條件的規則。 我對Python很陌生。我來自C,我習慣圍繞條件設置括號,這似乎並不是Python中的規則。編寫條件的pythonic方式

我試圖設置一個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被解釋),這將讓我正確的初始條件...

如果有人有一個明確的解釋(或參考)我會感興趣。

回答

3

&在Python中不被視爲條件。您必須使用and

valid_rx = False 
retry = 0 

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

您應該使用邏輯短路操作and,而不是位運算符&

另請注意,布爾型valid_rx可以直接在您的條件下使用;更簡潔:

while not valid_rx and retry < 5: 
    ... 
0
>>> valid_rx = False 
>>> retry = 0 
>>> not valid_rs and retry < 5 

使用notand。據說Python是「可運行的僞代碼」。

相關問題