私が持っているとしましょう
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 atrueの場合、式全体が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