2010-03-24 6 views
0

이 코드를 실행하는 동안 구문 오류가 발생하는 이유는 무엇입니까? 강조 표시된 섹션 (리턴 카드 [i])을 제거하면 대신 함수 호출을 강조 표시하는 오류가 발생합니다.알 수없는 구문 오류

도와주세요 :)

def dealcards(): 
    for i in range(len(cards)): 
     cards[i] = '' 
     for j in range(8): 
      cards[i] = cards[i].append(random.randint(0,9) 
    return cards[i] 


print (dealcards()) 
+0

실제 오류 메시지를 제공하십시오. (그것은 당신이이 것들을 발견하는 법을 배우는 것을 도울 것입니다.) –

답변

1

가까운 누락 :

cards[i] = cards[i].append(random.randint(0,9)) 
5
cards[i] = cards[i].append(random.randint(0,9) 
              ^

닫는 괄호가 없습니다. 그리고 다음 줄의 return 문이 잘못 들여 쓰기됩니다. 당신이 명확까지, 당신은이 함수를 호출 할 때 당신이 AttributeError을 얻을 것이다 찾을 때

+0

어리석은 질문 - 그 점을 발견했습니다 : P thanks – matt1024

+0

반환은 올바르게 말할 수있는 한 들여 쓰기입니다. 이것은'for in i (range) (len (cards)) '와 같은 줄에 있습니다 :'. – Javier

+0

@Javier Badia : 질문이 편집되었으므로, 당신 말이 맞습니다. – AndiDog

0
  • 귀하의 SyntaxErrorcards[i] = cards[i].append(random.randint(0,9)
  • 후 닫히지 않은 괄호 때문이다. cards[i]str 개체로 설정 한 다음 append으로 전화를 시도합니다. 문자열에는 append 메서드가 없습니다.
  • 인덱스를 반복하고 각 위치를 cards으로 변경하십시오. 이것은 보통 당신이 잘못하고있는 사인입니다. 단순히 파이썬에서 새로운리스트를 만드는 것이 전형적입니다.
    • 매우 드문 색인이 필요한 경우 일반적으로 enumerate을 사용하는 것이 가장 좋습니다.
  • 마지막 점에 대한 추가 정보 .....이 함수는 글로벌을 수정합니다 (cards). 함수를 사용하여 전역 상태를 변경하는 것은 나쁜 일입니다. 거의 확실히 더 나은 것 두 가지 가능성이 있습니다
    • 일부 속성 self.cards 또는 무엇이든을 변이합니다 deal_cards라는 방법 상태로 카드를 저장하는 클래스를 만드는. (아마가는 길)
    • cards을 받아들이고 새 목록을 반환하는 함수를 만듭니다. (아마 길을 가고 있지만, 현재의 기술을 통해 모듈화, 유지 보수 및 테스트 용이성을 향상 할 수 없습니다.)
관련 문제