2017-02-26 1 views
0

내 게임 코드에서 사용자가 그리드 주위를 이동하고 보물 상자에 도착하면 동전 수집이 10 증가합니다. 그러나 같은 보물 상자에 3 번 착륙하면 적기가되어 동전 수집을 설정합니다 사용자가 처음에 얼마나 많은 값이 있는지를 결정할 때 목록 내의 개별 값을 계산하기가 어려웠 기 때문에 나는이 문제로 어려움을 겪었습니다. 이것은 I가 위해가 현재 코드 내 코드로 구현되는 경우에는파이썬에서리스트와 사전을 바꾸는가?

 TreasureCoords[(x,y)] = 0 
     Visits = TreasureCoords.get((x,y), None) 
     if Visits is None: 
      pass # Nothing happens 
     elif Visits > 3: 
      print("Uh oh there's a bandit! Your coin collection is now 0.") 
      CoinCollection = 0 
     else: 
      print("You have landed on a treasure chest! You can visit it %i more times before it becomes a bandit." % (2 - visits)) 
      CoinCollection += 10 
      TreasureCoords[(x,y)] += 1 

, 이러한 오류가 발생하는리스트 인덱스 수 정수 튜플 안 : TreasureCoords을 [(X는 Y)]을 0 형식 오류가 = 위의 코드는 treasureCoords를 사전으로 사용한다는 사실과 관련이 있다고 생각합니다. 실제로는 보물 상자가있는 x 및 y 값으로 가득 찬 목록입니다. 값이 무작위로 설정되고 값의 수가 사용자에 의해 설정되므로 TreasureCoords와 BanditCoords를 사전으로 변경할 수 있다고 생각하지 않습니다. 따라서 키나 기타를 설정하는 방법을 알지 못합니다. 어떻게해야합니까?

답변

0

튜플 때문에 오류가 발생했습니다. 문제를 해결하는 가장 좋은 방법은 나머지 코드가 사전으로 변경하지 않아도되므로 사전을 사용하는 것이 가장 좋습니다.

실제로 Visits = TreasureCoords.get((x,y), None) 라인은 목록에서 작동하지 않는 get 메소드를 사용하므로 코드가 어쨌든 사전과 함께 작동하도록되어 있다고 생각합니다.

당신은 실제로 사전에 새 항목을 추가 할 수 있습니다

dict = {"Key1": 1} 
dict[(1, 2)] = 42 
print(dict[(1, 2)]) # prints 42 

당신은 아마이 또한 읽어야 https://learnpythonthehardway.org/book/ex39.html

+0

예 내가 동의 라인 방문 = TreasureCoords.get ((x, y)를, 없음) 사전 메서드를 사용하지만 사전에 어떻게 목록을 변경할지 모르겠습니다. TreasureCoords가리스트이고 TreasureCoords = random.sample (PossibleCoords, TCNumber)으로 할당 되었기 때문에 라인 자체는 실제로 작동하지 않습니다. PossibleCoords는 사용자가 그리드를 설정할 때 게임마다 게임을 변경하는 그리드의 모든 좌표 목록입니다 크기 및 TCNumber는 사용자가 설정하므로 게임마다 게임을 변경합니다. – George

+0

@George 불행히도 stackoverflow는 이러한 종류의 광범위한 질문에 대답하는 데 사용되지 않습니다. 제가 해 준 대답은 사전을 시도해야한다는 것입니다. 어떻게 해야할지 모르는 경우 사전에 대해 알아야합니다. 간단합니다. –

+0

아니요 사전을 작성하고 연결 한 웹 페이지를 읽는 방법을 알고 있습니다. 코드에 어떻게 구현할 수 있는지 알 수 없으며 내 질문에 사용 된 코드 블록에 대체 방법이 있는지 궁금합니다. . 내 질문이 너무 넓 으면 미안 해요. – George

관련 문제