1

「GIN」または「NOT READY」または「TO BE ABANDON OR NEEDS RESUBMISSION」のいずれかの値が retrunVal に等しいかどうかを確認しようとしています。印刷された、構文が正しくないのではないかと疑っています。誰か入力を提供できますか?

    if ('GIN'  or 'NOT READY' or 'TO BE ABANDON OR NEEDS RESUBMISSION' == returnVal):
        print "INSIDE"
4

3 に答える 3

8

このような:

if returnValue in ('GIN', 'NOT READY', 'TO BE ABANDON OR NEEDS RESUBMISSION'):
    print 'INSIDE'

これが標準的な慣用句inです。演算子を使用して、可能なすべての値を持つタプルのメンバーシップをテストします。or一連の'ed 条件よりもはるかにクリーンです。

于 2013-06-28T00:58:45.677 に答える
6

あなたのコードは、論理的には次のようになります。

if 'GIN' exists
or if 'NOT READY' exists
or if 'TO BE ABANDON OR NEEDS RESUBMISSION' is equal to retVal
   do something

Python の真理値に関するこのリンクを読んでください(これは paxdiablo の回答にも関連しています)。

より良いアプローチは、python の "in" ステートメントを使用することです。

if retVal in ['GIN', 'NOT READY', 'TO BE ABANDON OR NEEDS RESUBMISSION']:
   do something
于 2013-06-28T01:01:19.030 に答える
2

これはそれを行う1つの方法です:

if (returnVal == 'GIN')  or (returnVal == 'NOT READY') or returnVal == '...':

より Pythonic なより良い方法は、次を使用することinです。

if returnVal in ['GIN', 'NOT READY', '...']:

つまり、(最初のケースでは)別々の条件を使用し、orそれらを一緒に使用します。

常に表示さINSIDEれる理由は、が条件のコンテキストで値'GIN'として効果的に扱われているためです。true

>>> if 'GIN':
...     print "yes"
... 
yes

true or <anything>ですtrue

于 2013-06-28T00:58:49.183 に答える