Adding extra cheese.
Использование команд 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!
Всего в нескольких строках кода нам удалось эффективно решить вполне реальную
проблему!
Достарыңызбен бөлісу: