2016-08-04 7 views
0

내 프로그램은 물약과 가슴이있는 모험 게임입니다. 나는 이것을 목록에 넣었으므로 사용자가 물약을 마시거나 가슴을 열 때 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." 
+4

오류를 제공하는 코드를 게시 할 수 있습니까? –

+0

묘약 섹션에 대한 링크를 달았습니다. 폭발하는 부분은 내가 걱정하는 것이 아닙니다. [link] (https://www.dropbox.com/s/pecf9cyv2n45owt/testfile.py?dl=0) –

+0

폭발물에 대해서도 걱정할 필요가 있습니다. 그 이유는 묘약보다는 묘약 [0] .pop() 때문입니다. 팝 (0). –

답변

관련 문제