내 프로그램은 물약과 가슴이있는 모험 게임입니다. 나는 이것을 목록에 넣었으므로 사용자가 물약을 마시거나 가슴을 열 때 pop()
을 사용하여 목록에서 제거 할 수 있습니다. 이것은 사용자가 같은 방에있는 동안 잘 작동하지만 방으로 돌아 오면 다시 그 물약이나 가슴을 사용할 수 있습니다. if potions
이 진실되고로 계산하지 않는,목록과 팝업()이 예상대로 작동하지 않습니다.
if potions:
if there are still potions in the list:
drink potion
potions.pop()
else:
print "There are no potions left."
else:
print "There are no potions to drink."
가 나는 목록에서 물약을 팝업 언제 무슨 일이 일어나고 있는지 생각하고, 자동으로 진행됩니다
는 의사, 시스템은 다음과 같이 작동합니다 else 블록으로 보내지 만 왜 그 일을하는지 확신 할 수 없으며 내가 방으로 돌아올 때 목록이 스스로 재설정되는 이유를 확신 할 수 없습니다.
리스트 나 팝 방식이 어떻게 작동하는지 완전히 이해하지 못해 누군가가 위대한 것이 될 수 있다고 분명하게 밝혀 낼 가능성이 있습니다. 감사합니다. OP의 링크
if room.potions:
if len(room.potions) > 0: # if there are potions left
if hasattr(room.potions[0], 'explode'): # if the potion is a bomb
room.potions[0].explode(You) # explode using zeroeth item from the list
room.potions[0].pop # remove zeroeth item from the list`
else:
room.potions[0].heal(You) # heal using zeroeth potion from the list
room.potions.pop(0) # remove zeroeth item from the list
else:
print "There are no more potions to drink"
else:
print "There are no potions to drink"
편집에서
이편집 실제 코드 :
내 문제는 내가 사전에 대한의 매개 변수를 둘 때, 나는 중 하나로서 전체 방을 넣어했다 SOLVED 그들, 나는 그것의 모든 것을 잘 사용할 수있을 것이라고 생각합니다. 하지만 그럴 때마다 이라는 초기화 된 방이 설정되어 있으므로 내가하려는 일을 실제로 망칠 수 있습니다. 포션과 가슴에 별도의 매개 변수를 추가했는데 이제는 완벽하게 작동합니다. @Bernie에게 오류를 볼 수있는 유용한 조언을 보내 주셔서 감사합니다. 또한 @ 여러분의 제안과 조언에 감사드립니다. 어떤 포션이 남아있는 경우가 남아있는 경우
if potions: # same as len(potions) > 0
# drink potion
potions.pop()
else:
print "There are no potions to drink."
그래서 확인 : 그들은 그것을 다음과 같이이
potions = 1
if potions > 0:
drink potion
potions = potions - 1
else:
print "There are no potions left."
오류를 제공하는 코드를 게시 할 수 있습니까? –
묘약 섹션에 대한 링크를 달았습니다. 폭발하는 부분은 내가 걱정하는 것이 아닙니다. [link] (https://www.dropbox.com/s/pecf9cyv2n45owt/testfile.py?dl=0) –
폭발물에 대해서도 걱정할 필요가 있습니다. 그 이유는 묘약보다는 묘약 [0] .pop() 때문입니다. 팝 (0). –