Цикл while в Python

Установка Python 

Выбор текстового редактора 

Запуск программ Python в командной строке 

Числа и арифметические операторы Python 

Строки и функция print в Python 

Списки и кортежи в Python 

Сегментация последовательностей в Python 

Цикл for и функция range в Python 

Команда if и функция input в Python 

Словари в Python 

Множества в Python 

Цикл while в Python 

Функции в Python 

Классы в Python 

Файлы и исключения в Python 

Функции json. Сохранение данных Python 

Тестирование функций и классов на Python

Python массивы. Библиотека NumPy

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

Содержание страницы: 
1. Цикл while в Python
1.2. Как прервать цикл while
1.3. Флаги в цикле while
2.1. Команда break в цикле while
2.2. Команда continue в цикле while
3. Предотвращение зацикливания в цикле while
4. Цикл while со списками
5. Цикл while со словарями

 

 

 

 

 

 

 

 

 

 

1. Цикл while в Python 

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

>>> number = 1           # присваиваем начальное значение переменной
>>> while number <= 7:   # запускаем цикл при условии значение number <=7
...     print(number)    # выводим значение number при каждом цикле
...     number += 1      # после каждого цикла увеличиваем значение на 1
...
1
2
3
4
5
6
7

Вначале присваиваем значение переменной number. Затем запускаем цикл while до тех пор, пока значение переменной number не будет больше 7. При каждом проходе цикла выводим значение number и затем увеличиваем его на 1. Как только значение number станет больше 7 цикл прекращается. 

 

 

1.2. Как прервать цикл while на Python. 

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

prompt = "\nВведите любое слово, и оно будет выведено наоборот"
prompt += "\nЕсли надоело введите команду 'стоп'.\n"
message = ''
while message != "стоп":
    message = input(prompt)    
    if message != "стоп":
        print(message[::-1])
    else:
        print("Программа завершена")

В начале создаем сообщение prompt (посказку) которое объясняет пользователю что за программа и как ее можно завершить. Затем создается переменная message и ей присваивается пустое значение. Важно переменную message определить до запуска цикла, присвоить ей можно любое значение или пустую строку.  При запуске цикла while идет проверка совпадает ли значение message с условием продолжения цикла. При каждом выполнение цикла на экран выводятся правила цикла и условия его завершения. Дальше можно запустить команду if-else для проверки условия, если пользователь не ввел строку "стоп", то выводим строку пользователя на экран в обратном порядке с помощью сегментации строки [: : -1]

 

 

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду 'стоп'.
python лучший язык программирования
яинавориммаргорп кызя йишчул nohtyp

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду 'стоп'.
123456789
987654321

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду 'стоп'.
стоп
Программа завершена

Пока пользователь не введет слово "стоп", цикл будет начинаться заново.

 

1.3. Флаги в цикле while на Python

Если программа должна выполняться при нескольких условиях, то лучше определить одну переменную - флаг. Переменная - флаг сообщает, должна ли программа выполняться при каждом цикле. Для флага достаточно определить два состояния True - в котором программа продолжит выполнение и False - завершение программы. В результате в начале цикла while достаточно проверить всего одно условие для запуска программы, а все остальные проверки организовать в остальном коде. 

prompt = "\nВведите любое слово, и оно будет выведено наоборот"
prompt += "\nЕсли надоело введите команду 'стоп'\n"
active = True
while active:
    message = input(prompt)    
    if message == "стоп":
        active = False
        print("Программа завершена")        
    else:
        print(message[::-1])

В примере переменной active присваивается True и программа будет выполняться до тех пор, пока переменная active не станет равной False. Результат работы этой программы ничем не будет отличаться от программы в разделе 1.2. Вот что получим мы на выходе. 

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду 'стоп'
Python
nohtyP

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду 'стоп'
стоп
Программа завершена

Программа завершится если пользователь введет "стоп". После этого переменная active становится равной False и действие цикла прекращается. 

 

 

2.1.  Команда break в цикле while на Python

С помощью команды break так же можно прервать цикл whileЦикл, который начинается с while True выполняется бесконечно, пока не будет выполнена команда break.

prompt = "\nВведите столицу США с заглавной буквы: "
active = True
while active:
    capital = input(prompt)
    if capital == 'Вашингтон':
        print('Совершенно верно')
        break    
    else:
        print(f"{capital} не является столицей США")

 

 

В результате цикл while будет выполняться до тех пор, пока не будет введен правильный ответ, после чего сработает команда break и произойдет выход из цикла.

Введите столицу США с заглавной буквы: Лондон
Лондон не является столицей США

Введите столицу США с заглавной буквы: Москва
Москва не является столицей США

Введите столицу США с заглавной буквы: Вашингтон
Совершенно верно

 

2.2. Команда continue в цикле while на Python

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

>>> number = 0
>>> while number < 20:
...     number += 1
...     if number % 2 == 1:
...             continue
...     print(number, end=' ')
...
2 4 6 8 10 12 14 16 18 20 >>>

Сначала создадим переменную number и присвоим ей начальное значение. После идет проверка условий цикла что значение number  меньше 20. При входе в цикл значение number увеличивается на 1 и затем команда if проверяет остаток от деления на 2. Если остаток равен одному, то число не четное, команда continue приказывает Python игнорировать остаток кода и цикл запускается заново. Если остаток от деления равен нулю, то число выводится на экран и так до того пока number будет равен 20, затем условия цикла while не будут выполнены и цикл прекратится.

 

 

3. Предотвращение зацикливания в циклах while на Python

В каждом цикле должно быть предусмотрена возможность завершения, чтобы цикл while не выполнялся бесконечно. Например, если в предыдущем примере мы пропустили бы строку number += 1 , то значение number всегда будет равно 0 и цикл будет продолжаться до бесконечности

>>> number = 0
>>> while number < 20:
...     if number % 2 == 1:
...             continue
...     print(number, end=' ')
...
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .......

Для предотвращения зацикливания в терминальном окне введите Ctrl + C и всегда заранее проверяйте все условия цикла while и пути выхода из него. 

 

4. Цикл while со списками в Python

Для изменения списков в процессе обработки удобно использовать цикл while. К примеру, у нас есть целый список пользователей, который может состоять из тысяч пользователей и нам нужно будут удалить всех пользователей с определенным именем. Нам уже известно, что метод remove() для списков удаляет лишь первое вхождение заданного значения в список, но нам нужно удалить их все. В этом случае мы можем запустить цикл while:

>>> login = ['qwerty', 'arfa', 'bond', 'chelsy', 'qwerty', 'serg', 'cat', 'qwerty']
>>> while 'qwerty' in login:
...     login.remove('qwerty')
...
>>> print(login)
['arfa', 'bond', 'chelsy', 'serg', 'cat']

В результате при запуске цикла while проверяется условия нахождения 'qwerty' в списке login. Затем после первого удаления из списка, цикл запускается снова и Python проверяет наличие 'qwerty' в списке заново и так до тех, пор пока будет выполняться условие цикла while.

 

 

5. Цикл while со словарями в Python 

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

interview = {}  
active = True
while active:
    # Запрашиваем имя и ответ на вопрос
    name = input("\nКак вас зовут? ")
    question = input("Какая марка автомобиля вам нравиться ")
    # Создаем список с ответами и добавляем первый ответ
    answers = []
    answers.append(question)
    # Ответ сохраняем в словаре "имя: список ответов"
    interview[name] = answers

    # Запускаем второй цикл с возможностью добавления еще ответов к одному пользователю
    active_2 = True
    while active_2:
        repeat = input("Желаете добавить еще один автомобиль? (yes/no)  ")
        if repeat == 'no':
            active_2 = False
        else:
            question_n = input("Какая марка автомобиля вам еще нравиться ")
            # Добавляем ответ в список
            answers.append(question_n)
            
    # Вопрос о продолжение опроса
    repeat = input("Желаете продолжить опрос? (yes/no) ")
    if repeat == 'no':
        active = False
print("\nОпрос завершен, все результаты:")


# Переберем словарь и посмотрим ответы
for name, questions in interview.items():
    print(f"\n{name.title()} любит автомобили марки:")
    for question in questions:
        print(f"\t{question.title()}")

 

 

В начале программы создаем словарь interview в который в будущем будем добавлять посетителя с его ответами. Затем устанавливаем флаг продолжения опроса active = True. Пока active = True Python будет выполнять цикл while. При запуске цикла посетителю предлагается представиться и ввести ответ на заданный вопрос. Затем сразу создадим список ответов answers на всякий случай, если посетитель захочет дать несколько ответов и добавляем его в словарь. После запускаем второй цикл while с вопросом добавить еще один ответ. Количество ответов бесконечно, и посетитель сам решает, когда прервать программу. Если ответов больше нет, то возвращаемся к первому циклу и предлагаем ввести нового посетителя с опросом. После окончания цикла while выведем на экран всех посетителей и их ответы. Если запустить программу и ввести несколько пользователей с ответами, то результат будет выглядеть так:

Как вас зовут? bob
Какая марка автомобиля вам нравиться: audi
Желаете добавить еще один автомобиль? (yes/no)  yes
Какая марка автомобиля вам еще нравиться: bmw
Желаете добавить еще один автомобиль? (yes/no)  yes
Какая марка автомобиля вам еще нравиться: ford
Желаете добавить еще один автомобиль? (yes/no)  no
Желаете продолжить опрос? (yes/no) yes

Как вас зовут? Artem
Какая марка автомобиля вам нравиться: porshe
Желаете добавить еще один автомобиль? (yes/no)  no
Желаете продолжить опрос? (yes/no) no

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

Bob любит автомобили марки:
        Audi
        Bmw
        Ford

Artem любит автомобили марки:
        Porshe

 

Далее: Функции в Python

Назад: Множества в Python