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



Pdf көрінісі
бет56/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   52   53   54   55   56   57   58   59   ...   238
Байланысты:
2 5343781172763690906

amusement_park.py

age = 12


if age < 4:

    print("Your admission cost is $0.")

elif age < 18:



    print("Your admission cost is $5.")


92    Глава 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    Глава 5  •  Команды if

Проверка нескольких условий

Цепочки 

if

-



elif

-

else



 эффективны, но они подходят только в том случае, если ис-

тинным должно быть только одно условие. Как только Python находит выполня-

ющееся условие, все остальные проверки пропускаются. Такое поведение доста-

точно эффективно, потому что оно позволяет проверить одно конкретное условие.

Однако иногда бывает важно проверить все условия, представляющие интерес. 

В таких случаях следует применять серии простых команд 

if

 без блоков 



elif

 или 


else

. Такое решение уместно, когда истинными могут быть сразу несколько усло-

вий и вы хотите отреагировать на все истинные условия.

Вернемся к примеру с пиццей. Если кто-то закажет пиццу с двумя дополнениями, 

программа должна обработать оба дополнения:



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




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

    Басты бет