让它变成一行代码:' return sum[dict.get(char) for char in word] '



显然,标题中有无法解释的代码。一个信息贫乏的

SyntaxError: invalid syntax

stderr消息并没有告诉我太多信息,所以我将它逐行添加,使用:

[dict.get(['val','val','foo'])]

和后来发现dict.get()和可迭代对象不能很好地一起工作。

如果你还没有猜到,我在一个令人兴奋的领域,为学习和娱乐制作玩具程序。下面是我的代码:

def wordpoints(word):
    points = 0
    for char in word:
        points += dict.get(char)
    return points

这是我想要的:

def wordpoints(word):
    return sum[dict.get(char) for char in word]

为了澄清,dict在我的代码中被命名为tile_p,代表瓦片点。还有另一个def,查找拼字游戏玩家的字典中的True|False结果在MySQL表中,并将其传递给这个函数,如果它cursor.fectchone()有东西在它。

使用圆括号而不是方括号来调用函数:

def wordpoints(word):
    return sum(dict.get(char) for char in word)

解析器实际上告诉你的不仅仅是"语法无效":

    return sum[dict.get(char) for char in word]
                                ^
SyntaxError: invalid syntax

看到小^ ?它指向导致解析失败的令牌。到目前为止,对于解析器来说一切正常:它看到一个名称(sum),后面跟着订阅操作符[]。在括号内,它需要一个任意表达式。直到dict.get(char),这是一个有效的表达式,但是下面的标记for对解析器没有意义——因此此时出现语法错误。

最新更新