На этот раз каждый элемент из 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(f"Adding {requested_topping}.")
❺ else:
print(f"Sorry, we don't have {requested_topping}.")
print("\nFinished making your pizza!")
В точке ❶ определяется список доступных топпингов к пицце. Стоит заметить, что если в пиццерии используется постоянный ассортимент топпингов, этот список можно реализовать в виде кортежа. В точке ❷ создается список топпингов, заказанных клиентом. Обратите внимание на необычный заказ 'frenchfries'. В точке ❸ программа перебирает список заказанных топпингов. Внутри цикла программа сначала проверяет, что каждый заказанный топпинг присутствует в списке доступных топпингов ❹. Если топпинг доступен, он добавляется в пиццу. Если заказанный топпинг не входит в список, выполняется блок else❺. Блок else выводит сообщение о том, что топпинг недоступен.
С этим синтаксисом программа выдает четкий, содержательный вывод:
Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.
Finished making your pizza!
В языке Python значения, которые не могут изменяться, называются неизменяемыми (immutable), а неизменяемый список называется кортежем.
Упражнения
6.1. Человек: используйте словарь для сохранения информации об известном вам человеке. Сохраните имя, фамилию, возраст и город, в котором живет этот человек. Словарь должен содержать ключи с такими именами, как first_name, last_name, age и city. Выведите каждый фрагмент информации, хранящийся в словаре.
6.2. Любимые числа: используйте словарь для хранения любимых чисел. Возьмите пять имен и используйте их как ключи словаря. Придумайте любимое число для каждого человека и сохраните его как значение в словаре. Выведите имя каждого человека и его любимое число. Чтобы задача стала более интересной, опросите нескольких друзей и соберите реальные данные для своей программы.
6.3. Глоссарий: словари Python могут использоваться для моделирования «настоящего» словаря (чтобы не создавать путаницу, назовем его глоссарием):
• Вспомните пять терминов из области программирования, которые вы узнали в предыдущих главах. Используйте эти слова как ключи глоссария, а их определения — как значения.
• Выведите каждое слово и его определение в аккуратно отформатированном виде. Например, вы можете вывести слово, затем двоеточие и определение или же слово в одной строке, а его определение — с отступом в следующей строке. Используйте символ новой строки (\n) для вставки пустых строк между парами «слово — определение» в выходных данных.
собаки с кличкой 'willie' и возрастом 6 лет. В процессе обработки этой строки Python вызывает метод __init__() класса Dog с аргументами 'willie' и 6. Метод __init__() создает экземпляр, представляющий конкретную собаку, и присваивает его атрибутам name и age переданные значения. Затем Python возвращает экземпляр, представляющий собаку. Этот экземпляр сохраняется в переменной my_dog
my_dog = Dog('willie', 6)
Переменные, к которым вы обращаетесь через экземпляры, также называются атрибутами
передается self — ссылка на экземпляр; она предоставляет конкретному экземпляру доступ к атрибутам и методам класса. Когда вы создаете экземпляр Dog, Python вызывает метод __init__() из класса Dog
Конструкция self.name=name берет значение, хранящееся в параметре name, и сохраняет его в переменной name, которая затем связывается с создаваемым экземпляром.