.find()
のごブールと使用が両方とも間違っています。
まず、あなたはand
一緒にあなただけの'England'
を取得'24' and 'England'
場合:
右が最も
and
からの結果であるように、両方の文字列はPythonの意味で
True
をしているためである
>>> '24' and 'England'
'England'
。
>>> bool(-1)
True
そして.find()
は返すことができます:また、Pythonの意味でTrue
である。見つからない場合-1
- あなたが唯一'England'
.find()
を探しているs.find('24' and 'England')
使うときにサブストリングのインデックスを返します。ブール値の意味で、まだターゲット文字列で始まる文字列のインデックス0
は、0
はFalse
です。この場合、文字列が見つからないと誤って考えるでしょう。
Pythonで存在またはメンバーシップのテストのためにテストするための正しいオペレータがinです:
>>> s='I am 24 and live in England'
>>> '24' in s and 'England' in s
True
あなたのif
声明そのように書き、またはそれ以上の慣用的に、複数の条件をテストするために、(ためall
を使用することができますin
とor
用and
)またはany
():
>>> all(e in s for e in ('24','England'))
True
>>> any(e in s for e in ('France','England'))
True
>>> all(e in s for e in ('France','England'))
False
次にあなたがシームレスFUTURに条件を追加することができますあなたのコードを変更するのではなく、
''24 'と' England''の式はブール値== Falseを返します。これが検索対象となります。 – Elalfer
だから、私はこれらの2つの単語を検索し、それらの単語がそこにあるかどうかに応じて何かを印刷する方法はありますか? – user3092467