Использование цикла while со списками и словарями

We use cookies. Read the Privacy and Cookie Policy

До настоящего момента мы работали только с одним фрагментом информации, полученной от пользователя. Мы получали ввод пользователя, а затем выводили ответ на него. При следующем проходе цикла while программа получала новое входное значение и реагировала на него. Но, чтобы работать с несколькими фрагментами информации, необходимо использовать в циклах while списки и словари.

Цикл for хорошо подходит для перебора списков, но, скорее всего, список не должен изменяться в цикле, потому что у Python возникнут проблемы с отслеживанием элементов. Чтобы изменять список в процессе обработки, используйте цикл while. Использование циклов while со списками и словарями позволяет собирать, хранить и упорядочивать большие объемы данных для последующего анализа и обработки.

Возьмем список недавно зарегистрированных, но еще не проверенных пользователей сайта. Как переместить пользователей после проверки в отдельный список проверенных пользователей? Одно из возможных решений: используем цикл while для извлечения пользователей из списка непроверенных, проверяем их и включаем в отдельный список проверенных пользователей. Код может выглядеть так:

confirmed_users.py

# Начинаем с двух списков: пользователей для проверки

# и пустого списка для хранения проверенных пользователей.

(1) unconfirmed_users = ['alice', 'brian', 'candace']

confirmed_users = []

# Проверяем каждого пользователя, пока остаются непроверенные

# пользователи. Каждый пользователь, прошедший проверку,

# перемещается в список проверенных.

(2)while unconfirmed_users:

(3) . .current_user = unconfirmed_users.pop()

. .

. .print("Verifying user: " + current_user.title())

(4) . .confirmed_users.append(current_user)

# Вывод всех проверенных пользователей.

print(" The following users have been confirmed:")

for confirmed_user in confirmed_users:

. .print(confirmed_user.title())

Работа программы начинается с двух списков: непроверенных пользователей (1) и пустого списка для проверенных пользователей. Цикл while в точке (2) выполняется, пока в списке unconfirmed_users остаются элементы. Внутри этого списка функция pop() в точке (3) извлекает очередного непроверенного пользователя с конца списка unconfirmed_users. В данном примере список unconfirmed_users завершается пользователем Candace; это имя первым извлекается из списка, сохраняется в current_user и добавляется в список confirmed_users в точке (4). Далее следуют пользователи Brian и Alice.

Программа моделирует проверку каждого пользователя выводом сообщения, после чего переносит пользователя в список проверенных. По мере сокращения списка непроверенных пользователей список проверенных пользователей растет. Когда в списке непроверенных пользователей не остается ни одного элемента, цикл останавливается, и выводится список проверенных пользователей:

Verifying user: Candace

Verifying user: Brian

Verifying user: Alice

The following users have been confirmed:

Candace

Brian

Alice