Книга «Изучаем Python»



Pdf көрінісі
бет79/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   75   76   77   78   79   80   81   82   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 7 • Ввод данных и циклы while
выводиться снова и снова, а Python будет ожидать новых данных. При вводе слова 
'quit'
Python перестает выполнять цикл 
while
, а программа завершается:
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
Hello everyone!
Hello everyone!
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
Hello again.
Hello again.
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
quit
quit
Программа работает неплохо, если не считать того, что она выводит слово 
'quit'

словно оно является обычным сообщением. Простая проверка 
if
решает про-
блему:
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
message = input(prompt)
if message != 'quit':
print(message)
Теперь программа проводит проверку перед выводом сообщения и выводит со-
общение только в том случае, если оно не совпадает с признаком завершения:
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
Hello everyone!
Hello everyone!
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
Hello again.
Hello again. 
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
quit
Флаги
В предыдущем примере программа выполняла некоторые операции, пока заданное 
условие оставалось истинным. А что если вы пишете более сложную программу, 
выполнение которой может прерываться по нескольким разным условиям?
Например, компьютерная игра может завершаться по разным причинам: у игро-
ка кончились все «жизни»; прошло отведенное время; все города, которые он 
должен был защищать, были уничтожены и т. д. Игра должна завершаться 
при выполнении любого из этих условий. Попытки проверять все возможные 
условия в одной команде 
while
быстро усложняются и становятся слишком 
громоздкими.


Циклы while
127
Если программа должна выполняться только при истинности нескольких условий, 
определите одну переменную-
флаг
. Эта переменная сообщает, должна ли програм-
ма выполняться далее. Программу можно написать так, чтобы она продолжала 
выполнение, если флаг находится в состоянии 
True
, и завершалась, если любое 
из нескольких событий перевело флаг в состояние 
False
. В результате в команде 
while
достаточно проверить всего одно условие: находится ли флаг в состоянии 
True
. Все остальные проверки (которые должны определить, произошло ли собы-
тие, переводящее флаг в состояние 
False
) удобно организуются в остальном коде.
Добавим флаг в программу 
parrot .py
из предыдущего раздела. Этот флаг, который 
мы назовем 
active
(хотя переменная может называться как угодно), управляет тем, 
должно ли продолжаться выполнение программы:
prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
 
active = True
 
while active:
message = input(prompt)
 
if message == 'quit':
active = False
 
else:
print(message)
В точке 

переменной 
active
присваивается 
True
, чтобы программа начинала 
работу в активном состоянии. Это присваивание упрощает команду 
while
, потому 
что в самой команде 
while
никакие сравнения не выполняются; вся логика реали-
зуется в других частях программы. Пока переменная 
active
остается равной 
True

цикл выполняется.
В команде 
if
внутри цикла 
while
значение 
message
проверяется после того, как 
пользователь введет данные. Если пользователь ввел строку 
'quit'

, флаг 
active
переходит в состояние 
False
, а цикл 
while
останавливается. Если пользователь ввел 
любой текст, кроме 
'quit'

, то введенные им данные выводятся как сообщение.
Результаты работы этой программы ничем не отличаются от предыдущего приме-
ра, в котором условная проверка выполняется прямо в команде 
while
. Но теперь 
в программе имеется флаг, указывающий, находится ли она в активном состоянии, 
и вы сможете легко добавить новые проверки (в форме команд 
elif
) для событий, 
с которыми переменная 
active
может перейти в состояние 
False
. Это может быть 
удобно в сложных программах — например, в компьютерных играх с многочислен-
ными событиями, каждое из которых может привести к завершению программы. 
Когда по любому из этих событий флаг 
active
переходит в состояние 
False
, основ-
ной игровой цикл прервется, выводится сообщение о завершении игры, и у игрока 
появляется возможность сыграть еще раз.
Команда break и выход из цикла
Чтобы немедленно прервать цикл 
while
без выполнения оставшегося кода в цикле 
независимо от состояния условия, используйте команду 
break
. Команда 
break


128

Достарыңызбен бөлісу:
1   ...   75   76   77   78   79   80   81   82   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет