【发布时间】:2018-12-08 15:42:41
【问题描述】:
我试图通过将我的条件语句放在一行来压缩我的代码。
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关键字。你为什么要把这一切都放在一条线上?没有人看过这段代码会知道它做了什么。 -
您的“压缩”代码非常难以阅读。为什么要单排?分散到多行,看起来很棒。
-
顺便说一句,你说的“工作得很好”的代码不应该。至少不是你用无效缩进向我们展示它的方式。对于大多数语言来说,缩进对于阅读代码的人来说是件好事,但在 Python 的情况下,它实际上对于代码编译时没有错误非常重要。在这里发布代码时,请复制粘贴,不要重写。重写代码可能会导致错误,让我们感到困惑或认为这是真正的错误。
-
@Someprogrammerdude 这个缩进运行得很好,但我知道你的意思。
-
@DillonDavis 我正在考虑
def get_middle(s):部分。是的,可以在一行中编写整个函数,但在代码中却不是。
标签: python syntax return conditional-operator