python中的一行if else条件

时间:2012-10-30 07:52:50

标签: python conditional-statements

def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False

print sum10(7, 3)
print sum10(-13, -17)
print sum10(3, 8)

结果是:

True
True
None

不是我的预期:

True
True
False

任何想法?

6 个答案:

答案 0 :(得分:14)

您的代码

def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False

相当于

def sum10(a, b):
    if sum([a, b]) % 10 == 0: 
        return True; return False

所以永远不会评估return False


一些(可能是无穷无尽的)替代方案:

    if sum([a, b]) % 10 == 0: 
        return True
    return False

    return sum([a, b]) % 10 == 0

    return True if sum([a, b]) % 10 == 0 else False

    return False if (a+b) % 10 else True

或(最易读的恕我直言)

    return not (a + b) % 10

答案 1 :(得分:10)

这就是你想要的。

def sum10(a, b):
    return sum([a, b]) % 10 == 0

Python中的三元If也是这样的

<True Statment> if <Conditional Expression> else <False Statement>

例如

True if sum([a,b]) % 10 == 0 else False

我是否也建议使用plus运算符?

True if (a+b) % 10 == 0 else False

答案 2 :(得分:2)

如果你想要if-else一个衬里,它们应该这样写:

return True if sum([a, b]) % 10 == 0 else False

注意一个班轮中没有两个点。

答案 3 :(得分:1)

我认为return False永远不会被执行,因为它是在if之外,而不是在它之外。

因此,当您在if条件中使用true时,您正在执行return True,但从不执行第二个语句。

答案 4 :(得分:1)

def sum10(a, b):
    return sum([a, b])%10 == 0

答案 5 :(得分:0)

您可以尝试将结果存储在布尔变量中,然后在最后返回该变量,而不是立即返回 True 或 False。例如:

def sum(a,b):
  bool result
  if sum([a, b]) % 10 == 0:
    bool=True
  else:
    bool=False
  return bool