【发布时间】:2020-10-30 10:45:31
【问题描述】:
我在 Python 中有以下代码:
def show_sequence(n):
if n > 0:
return "+".join((str(i) for i in range(n+1))) + " = %d" %(sum(range(n+1)))
elif n == 0:
return "0=0"
else:
return str(n) + "<0"
问题:如果有 3 个 if 语句,是否有将所有行放入一个 return 语句的语法正确方法? 我知道它适用于一个 if-& else-statement,但我是 one-liner 的粉丝,并且我自己已经问过这个问题好几次了。
【问题讨论】:
-
只有当你想要一个荒谬的长而难以阅读的行而不是有意义的代码时。
-
我知道,这是一个清晰编码的坏例子,但我不知道语法应该是什么样子。已经尝试使用“或”,但它不起作用
-
return "+".join(...) if n > 0 else "0=0" if n == 0 else str(n) + "<0"。 (但如果其他人必须阅读您的代码,请不要对他们造成这种语法滥用)。 -
我不会把所有东西都放在一条线上,但你也可以很容易地将
n > 0和n == 0概括为一个n >= 0案例,如"+".join([0]) == "0"和sum([0]) == 0。跨度>
标签: python