#python #python-2.7
#python #python-2.7
Вопрос:
Я не могу заставить свой while
цикл начать с самого начала, чтобы не быть уверенным, что не так.
Первая попытка
def start() :
if choice in weapon:
print('You have taken the ') choice (',this is now in your backpack.n')
inventory.append(choice)
else:
print("Uh oh, I don't know about that item")
start()
вторая попытка
the_choice = False
while not the_choice:
if choice in weapon:
print('You have taken the ') choice (',this is now in your backpack.n')
inventory.append(choice)
the_choice = True
# boom no loop needed
else:
print("Uh oh, I don't know about that item")
the_choice = False
Я просто не могу понять это, любая помощь приветствуется, спасибо
Комментарии:
1. Этот код имеет точно такой же отступ, как в файле на вашем компьютере? Отступ действительно важен в python и может быть причиной вашей проблемы.
2. Я пишу в Visual Studio, однако отступ выглядит правильным.
3. Visual Studio обычно не предназначена для python… не то чтобы это было невозможно, просто есть лучшие редакторы
4. Извините, я беру это обратно, теперь это работает спасибо за помощь
Ответ №1:
Ваша вторая попытка выглядит близкой, но вам нужен esape, если все элементы выполнены: но посмотрите на свои пробелы: if находится внутри while: (этот код не проверен, просто чтобы показать рассуждения …)
choice = next_choice()
found = false
while not found:
if choice in weapon_stash:
inventory.append(choice)
found = True
else:
choice = next_choice() # get from user?
if choice == None:
break; # break out on some condition otherwise infinite loop
# found is now either true (a thing was found), or false (the user quit)
Комментарии:
1.
False
нетfalse
. Кроме того, это никогда не будет выполняться, потомуfound
что начинается как false . Я думаю, вы ищетеwhile not found:
2. Я исправил ошибку отступа, спасибо, ребята, хотя приведенный выше код выдает ошибку false is not define.
3. Извините, я забираю это обратно, теперь это работает, спасибо за вашу помощь.
4. Я .. э-э … не помню, как писал amp; и не not .. но я печатал на лету, а затем тестировал код. Я буду обновлять.
Ответ №2:
Причина, по которой я прокомментировал, что Visual Studio может быть не лучшим редактором python, заключается в том, что другие редакторы предупредили бы вас, что вы не увеличили отступ после определения вашей функции start()
с первой попытки и не сделали отступ после начала вашего while
цикла со второй попытки. Всегда полезно включать ваши сообщения об ошибках, чтобы помочь описать вашу проблему, но, если я могу догадаться, вы получаете что-то похожее IndentationError
на сообщения.
Отступ является одной из наиболее важных концепций программирования на python и служит той же цели, что и фигурные скобки в java или c . В Википедии есть довольно простое описание того, как это сделать.
Что касается редакторов, я личный поклонник spyder, хотя есть много отличных: Pycharm, pydev и т. Д..
Ответ №3:
Есть только ошибки отступа во второй попытке. Попробуйте приведенный ниже код.
the_choice = False
while not the_choice:
if choice in weapon:
print('You have taken the ') choice (',this is now in your backpack.n')
inventory.append(choice)
the_choice = True
# boom no loop needed
else:
print("Uh oh, I don't know about that item")
the_choice = False
Это застрянет в постоянном цикле, если пользователь продолжает вводить значение, которого нет в списке (оружие), поэтому вы можете поставить счетчик для каждого False
и обновить, как показано ниже.
counter=0
the_choice = False
while not the_choice:
if choice in weapon:
print('You have taken the ') choice (',this is now in your backpack.n')
inventory.append(choice)
the_choice = True
# boom no loop needed
else:
print("Uh oh, I don't know about that item")
the_choice = False
counter=counter 1
if counter >= 3:
print('You have made 3 wrong attempts ')
break
Комментарии:
1. Спасибо, кажется, это работает, если я выбираю что-то в своем списке (оружие), однако я набираю что-то другое, у меня есть постоянный цикл.
2. вы можете использовать оператор break .. Я обновлю свой ответ.