Как создать цикл для возврата к началу функции python

#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 .. Я обновлю свой ответ.