私が持っているとしましょう
a = "FIFA 13"
それから私は書いています
"bla" and "13" in a
そして結果は本当です...なぜですか?blaはにありません
私が持っているとしましょう
a = "FIFA 13"
それから私は書いています
"bla" and "13" in a
そして結果は本当です...なぜですか?blaはにありません
ブール式はとして評価され("bla") and ("13" in a)
、空でない文字列はtrueと評価されるため、"13" in a
trueの場合、式全体がtrueと評価されます。
代わりに、:を使用してall()
ください
all(x in a for x in ("bla", "13"))
または、両方を個別に確認してください。
"bla" in a and "13" in a
あなたは使用する必要があります
In [1]: a = "FIFA 13"
In [2]: "bla" in a and "13" in a
Out[2]: False
"bla"
本当です
"13" in a
本当です
したがって、真実"bla" and "13" in a
です
あなたが書きたかったのはおそらく:("bla" in a) and ("13" in a)
コードは、読み取られたように解釈されません。
("bla") and ("13" in a)
"bla"
は真実であるため、自動的にに評価されTrue
ます。"13" in a
かもしれませんTrue
。False and True
と評価されるためTrue
、"bla"
実際には考慮されていません。
もう少し明確にする必要があります:
'bla' in a and '13' in a
または、読み取り不可能なワンライナーを使用することもできます。
all(map(a.__contains__, ('bla', '13')))
短絡するワンライナーについては、 ..itertools.imap
の代わりに使用する必要があると思います。map