我试图通过将我的条件语句放在一行中来压缩我的代码。
def get_middle(s):
if len(s)%2 == 1: return(s[int(len(s)/2)])
else: return(s[int(len(s)/2)-1] + s[int(len(s)/2)])
这很好用。 我试着这样做:
return(s[int(len(s)/2)]) if len(s)%2 == 1 else return(s[int(len(s)/2)-1] + s[int(len(s)/2)])
但是我在该行的末尾遇到了语法错误。
错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
from solution import *
File "/home/codewarrior/solution.py", line 5
return(s[int(len(s)/2)]) if (len(s)%2 == 1) else (return(s[int(len(s)/2)-1] + s[int(len(s)/2)]))
^
SyntaxError: invalid syntax
还有: 这主要是因为我很好奇。我知道在现实世界的应用程序中,这段代码很难解释。
请您参考如下方法:
您不能再次调用 return 关键字,因为您已经在 if 和 else 的开头设置了 return。
改为这样做:
return(s[int(len(s)/2)]) if len(s)%2 == 1 else (s[int(len(s)/2)-1] + s[int(len(s)/2)])
此外,
那条线非常不清楚,也许你应该坚持使用常规的 if 和 else 语句,因为一个月后你可能不会 promise 任何事情。
