此问题来自codingbat。给定两个int值,返回它们的总和。除非这两个值相同,否则将它们的总和加倍。
我试图用一行来解决它:
def sum_double(a, b):
return 2*(a+b) if (a == b) else return a+b
但是我收到了错误,我不确定原因。非常感谢任何帮助。
答案 0 :(得分:9)
你不能在else子句中获得回报。它应该是:
def sum_double(a, b):
return 2*(a+b) if (a == b) else a+b
答案 1 :(得分:8)
您有两个选择:
使用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 #^
使用if/else
条件表达式:
def sum_double(a, b):
return 2*(a+b) if (a == b) else a+b
# (^ ^) <--- conditional expression
# (^ ^) <--- return statement
每个都有不同的语法和含义
答案 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)