如何检查多个返回值

2024-06-16 13:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图检查“GIN”或“NOT READY”或“to BE about or NEEDS RESUBMISSION”是否等于retrunVal,我注意到对于任何returnVal,如果“loop”正在获取,“INSIDE”正在打印,我怀疑语法不对,有人能提供输入吗?你知道吗

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

Tags: ortoloopif语法notbeabout
3条回答

像这样:

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

这是标准习惯用法-使用in操作符测试元组中所有可能值的成员身份。比一堆or的挫败要干净得多。你知道吗

这是一种方法:

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

尽管一个更具python风格的更好方法是使用in

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

换言之(对于第一种情况),使用分离条件并将它们or在一起。你知道吗

之所以总是看到INSIDE,是因为'GIN'在条件的上下文中被有效地视为true值:

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

true or <anything>就是true。你知道吗

从逻辑上讲,您的代码如下所示:

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

相关问题 更多 >