0

ユーザー入力文字列内の複数の単語を再度チェックしようとしています:

prompt = input("What would you like to know?")
if ('temperature' and 'outside') in prompt:

'outside'最初はandをチェックしようとして('temperature' or 'weather')いましたが、両方の方法で同じ問題に遭遇しました。trueだけ入力するとコードは返ってこないのですが、 だけ入力する'temperature'と返ってきます。 true'outside'

1つのテキスト値だけでなく、両方のテキスト値に対してチェックするために欠落しているフォーマットはありますか?

4

1 に答える 1

0

表示される予期しない動作の理由は、andここでの優先順位が高いためです。inこれは、左側に式を 1 つしか持てないためです。

したがって、何が起こるかが'temperature' and 'outside'評価されます。のセマンティクスはand、左側のオペランドが真である場合 (およびすべての空でない文字列が真である場合)、式全体の値が右側のオペランド (この場合は'outside') と等しくなるというものです。

In [1]: 'weather' and 'outside'
Out[1]: 'outside'

したがって、あなたがすることは、チェックすることと同じですif 'outside' in prompt


代わりに、次のことができます。

if 'temperature' in prompt and 'outside' in prompt:
    ...

またはより一般的に:

words = ['temperature', 'outside']
if all(word in prompt for word in words):
    ...

条件を組み合わせるには:

words = ['temperature', 'weather']
if 'outside' in prompt and any(word in prompt for word in words):
   ...
于 2013-05-24T11:18:38.103 に答える