Множественные списки
Посетители способны заказать что угодно, особенно когда речь заходит о дополнениях к пицце. Что если клиент захочет положить на пиццу картофель фри? Списки и команды if позволят вам убедиться в том, что входные данные имеют смысл, прежде чем обрабатывать их.
Давайте проверим наличие нестандартных дополнений перед тем, как готовить пиццу. В следующем примере определяются два списка. Первый список содержит перечень доступных дополнений, а второй — список дополнений, заказанных клиентом. На этот раз каждый элемент из requested_toppings проверяется по списку доступных дополнений перед добавлением в пиццу:
(1) available_toppings = ['mushrooms', 'olives', 'green peppers',
. . . . . . . . . . 'pepperoni', 'pineapple', 'extra cheese']
(2)requested_toppings = ['mushrooms', 'french fries', 'extra cheese']
(3)for requested_topping in requested_toppings:
(4) . .if requested_topping in available_toppings:
. . . .print("Adding " + requested_topping + ".")
(5) . .else:
. . . .print("Sorry, we don't have " + requested_topping + ".")
. . . .
print(" Finished making your pizza!")
В точке (1) определяется список доступных дополнений к пицце. Стоит заметить, что если в пиццерии используется постоянный ассортимент дополнений, этот список можно реализовать в виде кортежа. В точке (2) создается список дополнений, заказанных клиентом. Обратите внимание на необычный заказ 'french fries'. В точке (3) программа перебирает список заказанных дополнений. Внутри цикла программа сначала проверяет, что каждое заказанное дополнение присутствует в списке доступных дополнений (4). Если дополнение доступно, оно добавляется в пиццу. Если заказанное дополнение не входит в список, выполняется блок else (5). Блок else выводит сообщение о том, что дополнение недоступно.
С этим синтаксисом программа выдает четкий, содержательный вывод:
Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.
Finished making your pizza!
Всего в нескольких строках кода нам удалось эффективно решить вполне реальную проблему!
Упражнения
5-8. Hello Admin: создайте список из пяти и более имен пользователей, включающий имя ‘admin’. Представьте, что вы пишете код, который выводит приветственное сообщение для каждого пользователя после его входа на сайт. Переберите элементы списка и выведите сообщение для каждого пользователя.
• Для пользователя с именем 'admin’ выведите особое сообщение — например: «Hello admin, would you like to see a status report?»
• В остальных случаях выводите универсальное приветствие — например: «Hello Eric, thank you for logging in again».
5-9. Без пользователей: добавьте в hello_admin.py команду if, которая проверит, что список пользователей не пуст.
• Если список пуст, выведите сообщение: «We need to find some users!»
• Удалите из списка все имена пользователей и убедитесь в том, что программа выводит правильное сообщение.
5-10. Проверка имен пользователей: выполните следующие действия для создания программы, моделирующей проверку уникальности имен пользователей.
• Создайте список current_users, содержащий пять и более имен пользователей.
• Создайте другой список new_users, содержащий пять и более имен пользователей. Убедитесь в том, что одно или два новых имени также присутствуют в списке current_users.
• Переберите список new_users и для каждого имени в этом списке проверьте, было ли оно использовано ранее. Если имя уже использовалось, выведите сообщение о том, что пользователь должен выбрать новое имя. Если имя не использовалось, выведите сообщение о его доступности.
• Проследите за тем, чтобы сравнение выполнялось без учета регистра символов. Если имя 'John’ уже используется, в регистрации имени ‘JOHN’ следует отказать.
5-11. Порядковые числительные: порядковые числительные в английском языке заканчиваются суффиксом th (кроме 1st, 2nd и 3rd).
• Сохраните числа от 1 до 9 в списке.
• Переберите элементы списка.
• Используйте цепочку if-elif-else в цикле для вывода правильного окончания числительного для каждого числа. Программа должна выводить числительные «1st 2nd 3rd 4th 5th 6th 7th 8th 9th», причем каждый результат должен располагаться в отдельной строке.