0

Python でプログラムを書いていましたが、ランダムな構文エラーが発生し続けます。エラーが示す唯一のことは「SyntaxError: invalid syntax(uppgift2.py, line 16)」です

これは、私が取り組んでいるプログラムの一部である機能です。

def CalculateWordPoints(word, elementValues):
    points = 0
    # Calculate basic points and letter bonuses
    for i in range(0, len(word)):
    points += int(word[i])*ReturnLetterBonusMultiplier(elementValues[i])

    # Add word bonuses
    for i in range(0, len(word)):
        points *= ReturnWordBonusMultiplier(elementValues[i])
    return points

16 行目は関数の最初の行です。

4

2 に答える 2

0

ここでインデントを逃した:

for i in range(0, len(word)):
  points += int(word[i])*ReturnLetterBonusMultiplier(elementValues[i])

これはエラーではありませんが、より正確になります。

range(len(word))

そして、これらの 2 行をより Pythonic に書くことができます。

points = sum(int(w)*ReturnLetterBonusMultiplier(elementValues[i]) for (i,w) in enumerate(word))

次の 3 行も同様です。

points *= product(ReturnWordBonusMultiplier(elementValues[i]) for (i,w) in enumerate(word))

したがって、この関数をワンライナーとして記述できます。

return sum(int(w)*ReturnLetterBonusMultiplier(elementValues[i]) for (i,w) in enumerate(word)) * product(ReturnWordBonusMultiplier(elementValues[i]) for (i,w) in enumerate(word))
于 2012-06-28T06:50:51.033 に答える
0

問題は、16 行目より前の行が原因である可能性が最も高いです。
括弧 (または他の何か) を開き、それらを閉じるのを忘れたと思います。

また、Igor Chubin が指摘したように、インデントが不適切です (ただし、これにより、16 行目ではなく 20 行目でエラーが発生します)。

于 2012-06-28T06:51:46.820 に答える