【问题标题】:one line if else condition in python一行if else条件在python
【发布时间】:2012-10-19 12:59:57
【问题描述】:
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

有什么想法吗?

【问题讨论】:

    标签: python conditional-statements


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      def sum10(a, b):
          return sum([a, b])%10 == 0
      

      【讨论】:

      • 这里的一些解释不会不受欢迎。
      【解决方案3】:

      你的代码

      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
      

      【讨论】:

      • 谢谢牛排先生。还有一个问题,你能把你的“Better use 1”写成一行吗?
      • @yozloy 我添加了更多示例。
      【解决方案4】:

      这就是你想要的。

      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
      

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

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

      【讨论】:

      • 感谢三元解决方案
      【解决方案5】:

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

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

      【讨论】:

      • +1 很好地解释了它不起作用,我认为我应该坚持三元方式
      【解决方案6】:

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

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

      请注意那条衬里中没有两点。

      【讨论】:

      • 再次感谢@alestanis 回答我的问题,三元是要走的路
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多