Python one-liner if else语句

cov*_*efe 1 python

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

我试图在一行中解决它:

def sum_double(a, b):
    return 2*(a+b) if (a == b) else return a+b
Run Code Online (Sandbox Code Playgroud)

但我收到了一个错误,我不知道为什么.非常感谢任何帮助.

Kar*_*rin 8

你不能在else子句中有一个返回.它应该是:

def sum_double(a, b):
  return 2*(a+b) if (a == b) else a+b
Run Code Online (Sandbox Code Playgroud)


Oha*_*tan 7

你有2个选择:

  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   #^
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用if/else条件表达式:

    def sum_double(a, b):
        return 2*(a+b) if (a == b) else a+b
    #         (^                          ^)  <--- conditional expression 
    #  (^                                 ^)  <--- return statement
    
    Run Code Online (Sandbox Code Playgroud)

每个都有不同的语法和含义