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



Pdf көрінісі
бет58/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   54   55   56   57   58   59   60   61   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 5 • Команды if
 
else:
print("Your admission cost is $10.")
Условие 
if
в точке 

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

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

.
В данном примере условие 

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

лучше использовать другое, более компактное решение: присвоить цену в цепочке 
if
-
elif
-
else
, а затем добавить одну команду 
print
после выполнения цепочки:
age = 12
if age < 4:
 
price = 0
elif age < 18:
 
price = 5
else:
 
price = 10
 
print("Your admission cost is $" + str(price) + ".")
Строки 



и 

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

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

использует это значение для вывода со-
общения с ценой билета.
Этот пример выводит тот же результат, что и предыдущий, но цепочка 
if
-
elif
-
else
имеет более четкую специализацию. Вместо того чтобы определять цену и выво-
дить сообщения, она просто определяет цену билета. Кроме повышения эффектив-
ности, у этого кода есть дополнительное преимущество: лучшая изменяемость. 
Чтобы изменить текст выходного сообщения, достаточно будет отредактировать 
всего одну команду 
print
— вместо трех разных команд.
Серии блоков elif
Код может содержать сколько угодно блоков 
elif
. Например, если парк аттракци-
онов введет особую скидку для пожилых посетителей, вы можете добавить в свой 


Команды if
93
код еще одну проверку для определения того, распространяется ли скидка на те-
кущего посетителя. Допустим, посетители с возрастом 65 и выше платят половину 
от обычной цены билета, или $5:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 5
 
elif age < 65:
price = 10
 
else:
price = 5
print("Your admission cost is $" + str(price) + ".")
Б
у
льшая часть кода осталась неизменной. Второй блок 
elif
в точке 

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


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

Иногда блок 
else
удобен; в других случаях бывает нагляднее использовать допол-
нительную секцию 
elif
для обработки конкретного условия:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 5
elif age < 65:
price = 10
 
elif age >= 65:
price = 5
print("Your admission cost is $" + str(price) + ".")
Блок 
elif
в точке 

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


94

Достарыңызбен бөлісу:
1   ...   54   55   56   57   58   59   60   61   ...   266




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

    Басты бет