如何检查多个返回值

时间:2013-06-28 00:57:17

标签: python

我尝试检查是否有任何值“GIN”或“NOT READY”或“要放弃或需要RESUBVISSION”等于retrunVal,我注意到对于任何returnVal,“if”循环“正在”和“INSIDE” “正在打印,我怀疑语法是不对的,任何人都可以提供输入吗?

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

3 个答案:

答案 0 :(得分:8)

像这样:

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

这是标准习惯用法 - 使用in运算符测试具有所有可能值的元组中的成员资格。比一堆or'ed contitions更清洁。

答案 1 :(得分:6)

您的代码在逻辑上如下所示:

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

阅读此link关于python中的真值(这也与paxdiablo的答案有关)。

更好的方法是使用python的“in”语句:

if retVal in ['GIN', 'NOT READY', 'TO BE ABANDON OR NEEDS RESUBMISSION']:
   do something

答案 2 :(得分:2)

这是一种方法:

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