2017-09-01 4 views
1

私はPythonで条件を書くためのルールが何であるか疑問に思っています。 私はPythonにはかなり新しいです。私はCから来て、私は条件の周りに括弧を設定するために使用されていますが、これはPythonではルールではないようです。条件を書くための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を妨げているだろう)誰かが明確にされている場合...私の最初の条件が正しい作ったと思われる

を説明(または参照)私は興味があります。

答えて

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は「実行可能な擬似コード」と言われています。

関連する問題