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



Pdf көрінісі
бет59/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   55   56   57   58   59   60   61   62   ...   238
toppings.py

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']

for requested_topping in requested_toppings:

    print("Adding " + requested_topping + ".")

print("\nFinished making your pizza!")

Вывод достаточно тривиален, поэтому код сводится к простому циклу 

for

:

Adding mushrooms.



Adding green peppers.

Adding extra cheese.

Finished making your pizza!



Использование команд if со списками    97

А если в пиццерии вдруг кончится зеленый перец? Команда 

if

 в цикле 



for

 может 


правильно обработать эту ситуацию:

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']

for requested_topping in requested_toppings:

   if requested_topping == 'green peppers':



        print("Sorry, we are out of green peppers right now.")

   else:



print("Adding " + requested_topping + ".")

print("\nFinished making your pizza!")

На этот раз программа проверяет каждый заказанный элемент перед добавлением 

его к пицце. В точке  программа проверяет, заказал ли клиент зеленый перец, 

и если заказал — выводит сообщение о том, что этого дополнения нет. Блок 

else


 

в точке  гарантирует, что все другие дополнения будут включены в заказ.

Из выходных данных видно, что все заказанные дополнения обрабатываются 

правильно:

Adding mushrooms.

Sorry, we are out of green peppers right now.

Adding extra cheese.

Finished making your pizza!

Проверка наличия элементов в списке

Для всех списков, с которыми мы работали до сих пор, действовало одно про-

стое предположение: мы считали, что в каждом списке есть хотя бы один эле-

мент. Скоро мы предоставим пользователю возможность вводить информацию, 

хранящуюся в списке, поэтому мы уже не можем предполагать, что при каждом 

выполнении цикла в списке есть хотя бы один элемент. В такой ситуации перед 

выполнением цикла 

for


 будет полезно проверить, есть ли в списке хотя бы один 

элемент.


Проверим, есть ли элементы в списке заказанных дополнений, перед изготовлением 

пиццы. Если список пуст, программа предлагает пользователю подтвердить, что он 

хочет базовую пиццу без дополнений. Если список не пуст, пицца готовится так 

же, как в предыдущих примерах:

requested_toppings = []



if requested_toppings:

for requested_topping in requested_toppings:

print("Adding " + requested_topping + ".")

print("\nFinished making your pizza!")

else:



    print("Are you sure you want a plain pizza?")

На этот раз мы начинаем с пустого списка заказанных дополнений в точке . 

Вместо того чтобы сразу переходить к циклу 

for


, программа выполняет проверку 


98    Глава 5  •  Команды if

в точке . Когда имя списка используется в условии 

if

, Python возвращает 



True

если список содержит хотя бы один элемент; если список пуст, возвращается значе-



ние 

False


. Если 

requested_toppings

 проходит проверку условия, выполняется тот 

же цикл 


for

, который мы использовали в предыдущем примере. Если же условие 

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

действительно ли он хочет получить базовую пиццу без дополнений .

В данном примере список пуст, поэтому выводится сообщение:

Are you sure you want a plain pizza?

Если в списке есть хотя бы один элемент, в выходные данные включается каждое 

заказанное дополнение.

Множественные списки

Посетители способны заказать что угодно, особенно когда речь заходит о дополне-

ниях к пицце. Что если клиент захочет положить на пиццу картофель фри? Списки 

и команды 

if

 позволят вам убедиться в том, что входные данные имеют смысл, 



прежде чем обрабатывать их.

Давайте проверим наличие нестандартных дополнений перед тем, как готовить 

пиццу. В следующем примере определяются два списка. Первый список содержит 

перечень доступных дополнений, а второй — список дополнений, заказанных кли-

ентом. На этот раз каждый элемент из 

requested_toppings

 проверяется по списку 

доступных дополнений перед добавлением в пиццу:

available_toppings = ['mushrooms', 'olives', 'green peppers',



                      'pepperoni', 'pineapple', 'extra cheese']

requested_toppings = ['mushrooms', 'french fries', 'extra cheese']



for requested_topping in requested_toppings:

    if requested_topping in available_toppings:



        print("Adding " + requested_topping + ".")

    else:



        print("Sorry, we don't have " + requested_topping + ".")

        


print("\nFinished making your pizza!")

В точке  определяется список доступных дополнений к пицце. Стоит заметить, 

что если в пиццерии используется постоянный ассортимент дополнений, этот спи-

сок можно реализовать в виде кортежа. В точке  создается список дополнений, 

заказанных клиентом. Обратите внимание на необычный заказ 

'french


 

fries'


В точке  программа перебирает список заказанных дополнений. Внутри цикла 

программа сначала проверяет, что каждое заказанное дополнение присутствует 

в списке доступных дополнений . Если дополнение доступно, оно добавляется 

в пиццу. Если заказанное дополнение не входит в список, выполняется блок 

else


 . 

Блок 


else

 выводит сообщение о том, что дополнение недоступно.

С этим синтаксисом программа выдает четкий, содержательный вывод:



Оформление команд if    99

Adding mushrooms.

Sorry, we don't have french fries.

Adding extra cheese.

Finished making your pizza!

Всего в нескольких строках кода нам удалось эффективно решить вполне реальную 

проблему!



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




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

    Басты бет