Python — «пока не var»

#python #while-loop

#питон #цикл while

Вопрос:

Я читал «Автоматизируйте скучные вещи» и пытался изучить основы Python. Они приводят пример кода в книге, и я обычно немного расширяю его, чтобы лучше понять / обновить предыдущий материал. В этих примерах я столкнулся с концепцией, которую не совсем понимаю.

Независимо от того, для чего я ввожу name , я не могу пройти мимо цикла и перейти к гостевой части программы. Я был бы очень признателен, если бы кто-нибудь объяснил эту команду и рассказал мне, как освободиться от части имени и перейти к части гостей.

 name = ""   #defines var, blank string boolean equiv = "False"
while not name:        #Start loop and checks... something??
    print('Enter your name:')
    name = input()    #Loop repeats no matter what I enter here..
print('How many guests will you have?')
numOfGuests = int(input())
if numOfGuests:
    print('Be sure to have enough room for all your guests.')
print('Done')
 

Комментарии:

1. Что должен делать этот код?

2. Хм, мне это подходит. Когда я просто нажимаю enter , он возвращается к Enter your name: , но если я ввожу символ, затем нажимаю enter , он переходит к следующей части.

3. Это работает так, как и ожидалось. Я ввожу имя, а затем после нажатия клавиши Enter появляется следующее приглашение

Ответ №1:

С кодом проблем нет. Это был результат для меня:

 Enter your name:
How many guests will you have?
Be sure to have enough room for all your guests.
Done
 

Пустые строки в Python оцениваются как false, поэтому использование ‘not’ делает его true ; следовательно, вы попадаете в цикл, и пока вы ничего не ввели, вы все еще в цикле. После ввода чего-либо вы выходите из цикла.

Ответ №2:

используйте это

 while True:
    if name == "":
        name = input("what is your name ? ")
    else:
        break