2016-10-05 5 views
0

일부 배경에 대해서만, 저는 초보자 열광적 인 프로그래머입니다. 내 문제에 대한 도움을 구했지만 아무 것도 찾을 수 없었습니다. 나는 레크리에이션 적으로 텍스트 기반의 모험을하고 있으며 내가 뭘 잘못하고 있는지 궁금해하고 있습니다. 사용자가 1, 2 또는 3이 아닌 숫자를 입력 한 경우 루프를 다시 실행해야합니까?While 루프가 예상대로 실행되지 않습니다.

def print_inv(): 
    print("Your items: %s" % (inventory)) 


inventory = [] 
while weapon == "empty": 
    weapon = input("Enter what weapon you would like to use:\n\nSword(1)\nStaff(2)\nBow(3)\n\n) 
    if weapon == "1": 
     inventory.append("Sword") 
     print_inv() 
    elif weapon == "2": 
     inventory.append("Staff") 
     print_inv() 
    elif weapon == "3": 
     inventory.append("Bow") 
     print_inv() 
    else: 
     weapon == "empty" 
+8

프로그램을 텍스트로 게시하십시오. 그 작은 스크린 샷을 읽으려고 눈을 감 으려고하지 않을 것입니다. 라인 19에서 –

+3

을 지정하면 할당하지는 않지만 비교할 수 있습니다. ''==''를''=''로 대체하십시오. – f1sh

+3

다운 투표로 낙심하지 마십시오! 그것들은 당신이 당신의 글을 포맷하고, 편집하고, 도움을 줄 많은 사람들과 관련이 있습니다. –

답변

1

당신은 다른 케이스 내부 값을 할당해야

대신 비교
weapon ='empty' 

weapon =='empty' 

코드의 논리 오류가

주요 문제는 '루프 원입니다 처음에는 무기의 가치가 b이어야하기 때문에 전혀 작동하지 않습니다. weapon의 값이 이미 다음 다시 루프 그래서 당신은 while

== 대신 !=를 사용할 필요가 1
# weapon =1 by user input loop will stop because 1 =='empty' is false 

while weapon == "empty": 

때문에 설정 먼저 입력 한 후 중지됩니다 empty 경우 전자 인해 상태 weapon==emptyempty로 설정

또는 break를 사용하면 코드가 비교 대신 유용하지 않으므로 할당없이 루프를 즉시 중지 할 수 있습니다. empty

weapon ='zero' 
while weapon != "4": 
    weapon = input("Enter what weapon you would like to use:\n\nSword(1)\nStaff(2)\nBow(3)\nQuit(4)\n\n") 
    if weapon == "1": 
     inventory.append("Sword") 
     print_inv() 
    elif weapon == "2": 
     inventory.append("Staff") 
     print_inv() 
    elif weapon == "3": 
     inventory.append("Bow") 
     print_inv() 
    else: 
     break 
1

코드는 다음과 같이한다 :

while weapon == "empty": 
    weapon = input(...) 
    if weapon == "1": 
     #something 
    elif weapon == "2": 
     #something 
    else: 
     weapon = "empty" #!!!!!! 

==는 비교에 사용됩니다.
=은 할당에 사용됩니다.

+0

을 종료하기 위해 다른 것을 입력 할 때까지 인벤토리 추가를 계속하고 싶다면이 상태가 잘못 될 수 있습니다. –

관련 문제