【发布时间】:2018-09-10 15:47:20
【问题描述】:
我一直在解决编码挑战,并且能够非常简单地完成它们。但是,一旦我尝试将代码压缩为使用三元运算符的样式,问题就出现了。在这个问题中,我试图找到在数组中出现奇数次的整数。我以正常、良好的练习形式这样做,一切都很好。
def find_it(seq):
for x in seq:
if seq.count(x) % 2 == 1:
return x
这可行,但是当我尝试将其变成这样的东西时:
def find_it(seq):
for x in seq:
return x if seq.count(x) % 2 == 1
几乎每次我尝试三元运算符时都会出现此错误:
File "<string>", line 10
return x if seq.count(x) % 2 == 1
^
SyntaxError: invalid syntax
有什么问题?为什么总是说语法无效?
【问题讨论】:
-
安德烈基本上是在说需要有一个条件,如果为真则做某事,如果为假则做某事。
-
您的示例中需要
else。 -
好的,我输入这个:
return x if seq.count(x) % 2 == 1 else None,我仍然遇到问题None should equal 5。我不会认为 else 是问题。 -
试试:
return x if seq.count(x) % 2 == 1 else None。它读作:return (x if seq.count(x) % 2 == 1 else None)请记住,如果一个函数没有返回任何东西,它默认返回None。如果您使用三元运算符,则必须明确说明。 -
@cryptofanatic09 我认为问题的根源在于您像人而不是计算机一样思考(这通常是值得赞扬的):您似乎混淆了 表达式 和 statements:
return只能作为 statement 出现,而三元表达式是 expression。当解释器看到return时,它只需要一个表达式,而三元表达式需要一个else子句。请参阅docs.python.org/3.6/reference/grammar.html 了解令人痛苦的语法细节。