Заполнение словаря данными, введенными пользователем

При каждом проходе цикла while ваша программа может запрашивать любое необходимое количество данных. Напишем программу, которая при каждом проходе цикла запрашивает имя участника и его ответ. Собранные данные будут сохраняться в словаре, потому что каждый ответ должен быть связан с конкретным пользователем:

mountain_poll.py

responses = {}

# Установка флага продолжения опроса.

polling_active = True

while polling_active:

. .# Запрос имени и ответа пользователя.

(1) . .name = input(" What is your name? ")

. .response = input("Which mountain would you like to climb someday? ")

. .

. .# Ответ сохраняется в словаре:

(2) . .responses[name] = response

. .

. .# Проверка продолжения опроса.

(3) . .repeat = input("Would you like to let another person respond? (yes/ no) ")

. .if repeat == 'no':

. . . .polling_active = False

. . . .

# Опрос завершен, вывести результаты.

print(" --- Poll Results ---")

(4)for name, response in responses.items():

. .print(name + " would like to climb " + response + ".")

Сначала программа определяет пустой словарь (responses) и устанавливает флаг (polling_active), показывающий, что опрос продолжается. Пока polling_active содержит True, Python будет выполнять код в цикле while.

В цикле пользователю предлагается ввести имя и название горы, на которую ему хотелось бы подняться (1) . Эта информация сохраняется в словаре responses в строке (2), после чего программа спрашивает у пользователя, нужно ли продолжать опрос (3). Если пользователь отвечает положительно, то программа снова входит в цикл while. Если же ответ отрицателен, флаг polling_active переходит в состояние False, цикл while перестает выполняться, и завершающий блок кода (4) выводит результаты опроса.

Если вы запустите эту программу и введете пару ответов, результат будет выглядеть примерно так:

What is your name? Eric

Which mountain would you like to climb someday? Denali

Would you like to let another person respond? (yes/ no) yes

What is your name? Lynn

Which mountain would you like to climb someday? Devil's Thumb

Would you like to let another person respond? (yes/ no) no

--- Poll Results ---

Lynn would like to climb Devil's Thumb.

Eric would like to climb Denali.

Упражнения

7-8. Сэндвичи: создайте список с именем sandwich_orders, заполните его названиями различных видов сэндвичей. Создайте пустой список с именем finished_sandwiches. В цикле переберите элементы первого списка и выведите сообщение для каждого элемента (например, «I made your tuna sandwich»). После этого каждый сэндвич из первого списка перемещается в список finished_sandwiches. После того как все элементы первого списка будут обработаны, выведите сообщение с перечислением всех изготовленных сэндвичей.

7-9. Без пастрами: используя список sandwich_orders из упражнения 7-8, проследите за тем, чтобы значение ‘pastrami’ встречалось в списке как минимум три раза. Добавьте в начало программы код для вывода сообщения о том, что пастрами больше нет, и напишите цикл while для удаления всех вхождений ‘pastrami’ из sandwich_orders. Убедитесь в том, что в finished_sandwiches значение ‘pastrami’ не встречается ни одного раза.

7-10. Отпуск мечты: напишите программу, которая опрашивает пользователей, где бы они хотели провести отпуск. Включите блок кода для вывода результатов опроса.