М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет100/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   96   97   98   99   100   101   102   103   ...   334
Байланысты:
Изучаем Python

Hello again.
Hello again. 
Tell me something, and I will repeat it back to you: 
Enter 'quit' to end the program. 
quit
Флаги
В предыдущем примере программа выполняла некоторые операции, пока заданное 
условие оставалось истинным. А если вы пишете более сложную программу, вы-
полнение которой может прерываться по нескольким разным условиям?


Циклы while
135
Например, компьютерная игра может завершаться по разным причинам: у игрока 
кончились все «жизни»; прошло отведенное время; все города, которые он должен 
был защищать, были уничтожены и т. д. Игра должна завершаться при выполне-
нии любого из этих условий. Попытки проверять все возможные условия в одной 
команде 
while
быстро усложняются и становятся слишком громоздкими.
Если программа должна выполняться только при истинности нескольких условий, 
определите одну переменную-
флаг
. Эта переменная сообщает, должна ли програм-
ма выполняться далее. Программу можно написать так, чтобы она продолжала 
выполнение, если флаг находится в состоянии 
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



136

Достарыңызбен бөлісу:
1   ...   96   97   98   99   100   101   102   103   ...   334




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

    Басты бет