1

私が持っているとしましょう

a = "FIFA 13"

それから私は書いています

"bla" and "13" in a

そして結果は本当です...なぜですか?blaはにありません

4

4 に答える 4

8

ブール式はとして評価され("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
于 2012-10-31T21:54:53.700 に答える
3

あなたは使用する必要があります

In [1]: a = "FIFA 13"

In [2]: "bla" in a and "13" in a
Out[2]: False
于 2012-10-31T21:55:42.793 に答える
2

"bla"本当です

"13" in a本当です

したがって、真実"bla" and "13" in aです

あなたが書きたかったのはおそらく:("bla" in a) and ("13" in a)

于 2012-10-31T21:56:44.690 に答える
2

コードは、読み取られたように解釈されません。

("bla") and ("13" in a)

"bla"は真実であるため、自動的にに評価されTrueます。"13" in aかもしれませんTrueFalse and Trueと評価されるためTrue"bla"実際には考慮されていません。

もう少し明確にする必要があります:

'bla' in a and '13' in a

または、読み取り不可能なワンライナーを使用することもできます。

all(map(a.__contains__, ('bla', '13')))

短絡するワンライナーについては、 ..itertools.imapの代わりに使用する必要があると思います。map

于 2012-10-31T21:57:22.240 に答える