Книга «Изучаем Python»



Pdf көрінісі
бет81/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   77   78   79   80   81   82   83   84   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 7 • Ввод данных и циклы while
Чтобы избежать зацикливания, тщательно проверьте каждый цикл 
while
и убеди-
тесь в том, что цикл прерывается именно тогда, когда предполагается. Если про-
грамма должна завершаться при вводе некоторого значения, запустите программу 
и введите это значение. Если программа не завершилась, проанализируйте обра-
ботку значения, которое должно приводить к выходу из цикла. Проверьте, чтобы 
хотя бы одна часть программы могла привести к тому, что условие цикла станет 
равно 
False
или будет выполнена команда 
break
.
ПРИМЕЧАНИЕ
В некоторых редакторах — например, в Sublime Text — используется встроенное окно вывода . Оно 
может усложнить прерывание бесконечных циклов; возможно, для выхода из цикла придется за-
крыть редактор .
УПРАЖНЕНИЯ
7-4 . Дополнения для пиццы: напишите цикл, который предлагает пользователю вводить 
дополнения для пиццы до тех пор, пока не будет введено значение 'quit’ . При вводе каждо-
го дополнения выведите сообщение о том, что это дополнение включено в заказ .
7-5 . Билеты в кино: кинотеатр установил несколько вариантов цены на билеты в зависимо-
сти от возраста посетителя . Для посетителей младше 3 лет билет бесплатный; в возрасте 
от 3 до 12 билет стоит $10; наконец, если возраст посетителя больше 12, билет стоит $15 . 
Напишите цикл, который предлагает пользователю ввести возраст и выводит цену билета .
7-6 . Три выхода: напишите альтернативную версию упражнения 7-4 или упражнения 7-5, 
в которой каждый пункт следующего списка встречается хотя бы один раз .
• Завершение цикла по проверке условия в команде while .
• Управление продолжительностью выполнения цикла в зависимости от переменной 
active .
• Выход из цикла по команде break, если пользователь вводит значение ‘quit’ .
7-7 . Бесконечный цикл: напишите цикл, который никогда не завершается, и выполните его . 
(Чтобы выйти из цикла, нажмите Ctrl+C или закройте окно с выводом .)
Использование цикла while со списками и словарями
До настоящего момента мы работали только с одним фрагментом информации, 
полученной от пользователя. Мы получали ввод пользователя, а затем выводили 
ответ на него. При следующем проходе цикла 
while
программа получала новое 
входное значение и реагировала на него. Но, чтобы работать с несколькими 
фрагментами информации, необходимо использовать в циклах 
while
списки 
и словари.
Цикл 
for
хорошо подходит для перебора списков, но, скорее всего, список не дол-
жен изменяться в цикле, потому что у Python возникнут проблемы с отслежива-
нием элементов. Чтобы изменять список в процессе обработки, используйте цикл 
while
. Использование циклов 
while
со списками и словарями позволяет собирать, 
хранить и упорядочивать большие объемы данных для последующего анализа 
и обработки.
Возьмем список недавно зарегистрированных, но еще не проверенных пользова-
телей сайта. Как переместить пользователей после проверки в отдельный список 


Использование цикла while со списками и словарями
131
проверенных пользователей? Одно из возможных решений: используем цикл 
while
для извлечения пользователей из списка непроверенных, проверяем их и включаем 
в отдельный список проверенных пользователей. Код может выглядеть так:
confirmed_users.py
# Начинаем с двух списков: пользователей для проверки
# и пустого списка для хранения проверенных пользователей.
 
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# Проверяем каждого пользователя, пока остаются непроверенные
# пользователи. Каждый пользователь, прошедший проверку,
# перемещается в список проверенных.
 
while unconfirmed_users:
 
current_user = unconfirmed_users.pop()
print("Verifying user: " + current_user.title())
 
confirmed_users.append(current_user)
# Вывод всех проверенных пользователей.
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
Работа программы начинается с двух списков: непроверенных пользователей 

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

выпол-
няется, пока в списке 
unconfirmed_users
остаются элементы. Внутри этого списка 
функция 
pop()
в точке 

извлекает очередного непроверенного пользователя 
с конца списка 
unconfirmed_users
. В данном примере список 
unconfirmed_users
завершается пользователем 
Candace
; это имя первым извлекается из списка, со-
храняется в 
current_user
и добавляется в список 
confirmed_users
в точке 

. Далее 
следуют пользователи 
Brian
и 
Alice
.
Программа моделирует проверку каждого пользователя выводом сообщения, после 
чего переносит пользователя в список проверенных. По мере сокращения списка 
непроверенных пользователей список проверенных пользователей растет. Когда 
в списке непроверенных пользователей не остается ни одного элемента, цикл оста-
навливается, и выводится список проверенных пользователей:
Verifying user: Candace 
Verifying user: Brian 
Verifying user: Alice 
The following users have been confirmed: 
Candace 
Brian 
Alice
Удаление всех вхождений конкретного значения из списка
В главе 3 функция 
remove()
использовалась для удаления конкретного значения 
из списка. Функция 
remove()
работала, потому что интересующее нас значение 


132

Достарыңызбен бөлісу:
1   ...   77   78   79   80   81   82   83   84   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет