2012-06-28 3 views
0

처음으로 포스터가있는 SO =)Python 2.7.2 함수 구문 오류

저는 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은 함수의 첫 번째 줄입니다.

+3

이 줄 앞에있는 줄을보십시오. 이 유형의 오류는 이전 행의 누락 괄호 등으로 인해 발생할 수 있습니다. – BrenBarn

+0

더 많은 코드를 게시하지 않고서 만 볼 수있는 것은 점 ('def'에서 4 줄 아래로)으로 시작하는 줄에 들여 쓰기가 잘못되었음을 나타냅니다. –

+0

감사 BrenBarn. 문제는 이전에이 함수의 괄호가 누락되었습니다. 또한 4 행의 들여 쓰기 오류는 파일에서 코드를 복사하여 붙여 넣을 때 발생했습니다. 그것은 내 로컬 파일에 존재하지 않습니다. –

답변

0
여기

부재 들여 쓰기 :

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

오류가 아니라 단지 더 정확한 것 :

range(len(word)) 

그리고 당신이 더 많은 파이썬이 두 줄을 작성할 수

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

다음 세 줄에 대해서도 동일합니다.

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

그래서 당신이 oneliner으로이 기능을 쓸 수있다 :

return sum(int(w)*ReturnLetterBonusMultiplier(elementValues[i]) for (i,w) in enumerate(word)) * product(ReturnWordBonusMultiplier(elementValues[i]) for (i,w) in enumerate(word)) 
0

문제로 인해 줄 앞에 줄을 가능성이 가장 높은 16
난 당신이 괄호를 열 (또는 뭔가 다른) 추측 것 그들을 닫는 것을 잊었습니다.

또한 Igor Chubin이 지적했듯이 나쁜 들여 쓰기가 있습니다 (그러나이 오류는 16 번이 아닌 20 번째 줄에서 오류를 일으킬 수 있음).