Python one-liner if else语句

时间:2016-08-10 21:02:01

标签: python

此问题来自codingbat。给定两个int值,返回它们的总和。除非这两个值相同,否则将它们的总和加倍。

我试图用一行来解决它:

def sum_double(a, b):
    return 2*(a+b) if (a == b) else return a+b

但是我收到了错误,我不确定原因。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:9)

你不能在else子句中获得回报。它应该是:

def sum_double(a, b):
  return 2*(a+b) if (a == b) else a+b

答案 1 :(得分:8)

您有两个选择:

  1. 使用if/else声明:

    def sum_double(a, b):
        if (a == b):                                 #if/else statement
            return 2*(a+b) # <--- return statement   #^
        else:                                        #^
            return a+b     # <--- return statement   #^
    
  2. 使用if/else条件表达式:

    def sum_double(a, b):
        return 2*(a+b) if (a == b) else a+b
    #         (^                          ^)  <--- conditional expression 
    #  (^                                 ^)  <--- return statement
    
  3. 每个都有不同的语法和含义

答案 2 :(得分:4)

您应该删除第二个return

def sum_double(a, b):
    return 2*(a+b) if a == b else a+b

2*(a+b) if a == b else a+b表达式的值是您实际想要返回的值。

答案 3 :(得分:0)

在Python中,True,False与1,0相同:

def sum_double(a, b): return ((a==b) + 1) * (a+b)

或使用lambda,

sum_double = lambda a, b: ((a==b) + 1) * (a+b)