1. ホーム
  2. python

[解決済み] ある変数がある文字列と等しいか、別の文字列と等しいかを確認する方法は?重複

2023-06-04 12:07:01

質問

if var is 'stringone' or 'stringtwo':
    dosomething()

これは動作しません! 私は変数を持っていて、それがいずれかの値であるときに何かをする必要がありますが、それはif文に入力されません。Javaでは if (var == "stringone" || "stringtwo") は動作します。Pythonでこれを書くにはどうすればよいですか?

どのように解決するのですか?

期待したとおりになりません。

if var is 'stringone' or 'stringtwo':
    dosomething()

と同じである。

if (var is 'stringone') or 'stringtwo':
    dosomething()

というのは、常に真であり 'stringtwo' は "true"値とみなされるからです。

2つの選択肢があります。

if var in ('stringone', 'stringtwo'):
    dosomething()

あるいは、個別に等値性テストを書くこともできます。

if var == 'stringone' or var == 'stringtwo':
    dosomething()

を使用しないでください。 is なぜなら is はオブジェクトの同一性を比較するからです。 Pythonはたくさんの文字列を扱うので、時々それを避けることができるかもしれません。 しかし is を使わないでください。

>>> 'a' + 'b' == 'ab'
True
>>> 'a' + 'b' is 'abc'[:2]
False # but could be True
>>> 'a' + 'b' is 'ab'
True  # but could be False