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



Pdf көрінісі
бет71/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   67   68   69   70   71   72   73   74   ...   334
Байланысты:
Изучаем Python

amusement_park.py
age = 12

if age < 4:
print("Your admission cost is $0.")

elif age < 18:
print("Your admission cost is $25.")

else:
print("Your admission cost is $40.")
Условие 
if
в точке 

проверяет, что возраст посетителя меньше 4 лет. Если условие 
истинно, то программа выводит соответствующее сообщение и Python пропускает 
остальные проверки. Строка 
elif
в точке 

в действительности является еще одной 
проверкой 
if
, которая выполняется только в том случае, если предыдущая проверка 
завершилась неудачей. В этом месте цепочки известно, что возраст посетителя не 
меньше 4 лет, потому что первое условие было ложным. Если посетителю меньше 
18 лет, программа выводит соответствующее сообщение и Python пропускает блок 
else
. Если ложны оба условия — 
if
и 
elif
, то Python выполняет код в блоке 
else
в точке 

.


96
Глава 5 • Команды if
В данном примере условие 

дает ложный результат, поэтому его блок не выпол-
няется. Однако второе условие оказывается истинным (12 меньше 18), поэтому код 
будет выполнен. Вывод состоит из одного сообщения с ценой билета:
Your admission cost is $25.
При любом значении возраста больше 17 первые два условия ложны. В таких си-
туациях блок 
else
будет выполнен и цена билета составит $40.
Вместо того чтобы выводить сообщение с ценой билета в блоках 
if
-
elif
-
else

лучше использовать другое, более компактное решение: присвоить цену в цепочке 
if
-
elif
-
else
, а затем добавить одну команду 
print
после выполнения цепочки:
age = 12
if age < 4:

price = 0
elif age < 18:

price = 25
else:

price = 40

print(f"Your admission cost is ${price}.")
Строки 



и 

присваивают значение 
price
в зависимости от значения 
age

как и в предыдущем примере. После присваивания цены в цепочке 
if
-
elif
-
else
отдельная команда 
print
без отступа 

использует это значение для вывода со-
общения с ценой билета.
Этот пример выводит тот же результат, что и предыдущий, но цепочка 
if
-
elif
-
else
имеет более четкую специализацию. Вместо того чтобы определять цену и выво-
дить сообщения, она просто определяет цену билета. Кроме повышения эффектив-
ности, у этого кода есть дополнительное преимущество: его легче модифицировать. 
Чтобы изменить текст выходного сообщения, достаточно будет отредактировать 
всего одну команду 
print
— вместо трех разных команд.
Серии блоков elif
Код может содержать сколько угодно блоков 
elif
. Например, если парк аттракци-
онов введет особую скидку для пожилых посетителей, вы можете добавить в свой 
код еще одну проверку для определения того, распространяется ли скидка на те-
кущего посетителя. Допустим, посетители возрастом 65 и выше платят половину 
обычной цены билета, или $40:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 25

elif age < 65:


Команды if
97
price = 40

else:
price = 20
print(f"Your admission cost is ${price}.")
Большая часть кода осталась неизменной. Второй блок 
elif
в точке 

теперь 
убеждается в том, что посетителю меньше 65 лет, прежде чем назначить ему пол-
ную цену билета $40. Обратите внимание: значение, присвоенное в блоке 
else


должно быть заменено на $20, потому что до этого блока доходят только посетители 
с возрастом 65 и выше.
Отсутствие блока else
Python не требует, чтобы цепочка 
if
-
elif
непременно завершалась блоком 
else

Иногда блок 
else
удобен; иногда бывает лучше использовать дополнительную 
секцию 
elif
для обработки конкретного условия:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 25
elif age < 65:
price = 40

elif age >= 65:
price = 20
print(f"Your admission cost is ${price}.")
Блок 
elif
в точке 

назначает цену $20, если возраст посетителя равен 65 и выше; 
смысл такого кода более понятен, чем у обобщенного блока 
else
. С таким измене-
нием выполнение каждого блока возможно только при истинности конкретного 
условия.
Блок 
else
«универсален»: он обрабатывает все условия, не подходящие ни под одну 
конкретную проверку 
if
или 
elif
, причем в эту категорию иногда могут попасть 
недействительные или даже вредоносные данные. Если у вас имеется завершающее 
конкретное условие, лучше используйте завершающий блок 
elif
и опустите блок 
else
. В этом случае вы можете быть уверены в том, что ваш код будет выполняться 
только в правильных условиях.
Проверка нескольких условий
Цепочки 
if
-
elif
-
else
эффективны, но они подходят в том случае, если истинным 
должно быть только одно условие. Когда Python находит выполняющееся условие, 
все остальные проверки пропускаются. Такое поведение достаточно эффективно, 
потому что оно позволяет проверить одно конкретное условие.


98

Достарыңызбен бөлісу:
1   ...   67   68   69   70   71   72   73   74   ...   334




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

    Басты бет