2016-10-05 4 views
0

Эй, просто для некоторого фона, я начинающий программист-энтузиаст. Я искал помощь по моей проблеме, но ничего не мог найти. Я делаю текстовое приключение рекреационно и интересно, что я делаю неправильно. Если пользователь ввел номер, который не был 1, 2 или 3, он должен перезапустить петлю правильно?Пока цикл работает не так, как ожидалось

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

Опубликуйте свою программу в виде текста. Я не собираюсь давать себе глаза, пытаясь прочитать этот крошечный снимок экрана. –

+3

в строке 19, вы не присваиваете, а сравниваете. Замените '' == '' '' = ''. – f1sh

+3

Не разочаровывайтесь! Они связаны с тем, как вы отформатировали свой пост, отредактировали его, и будет много желающих помочь –

ответ

1

вам нужно присвоить значение внутри еще при

weapon ='empty' 

вместо сравнения

weapon =='empty' 

ошибка логики в коде

Основная проблема в том, чтобы цикл выиграл» т на всех, потому что в первый раз значение оружия должно быть b е устанавливается в empty из-за состояния если значение weapon уже empty затем снова ваш цикл остановится после первого входа установлен в 1, потому что

# weapon =1 by user input loop will stop because 1 =='empty' is false 

while weapon == "empty": 

так что вам нужно использовать != вместо == с while

Или вы можете использовать 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

, это не сработает чувак, вы пропустили недостаток условия –