Добавить в корзинуПозвонить
Найти в Дзене
Удалёнка

Цикл while в Python

Цикл while позволяет повторить одно или несколько действий до тех пор, пока заданное условие остается истинным. Цикл 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 позволяет повторить одно или несколько действий до тех пор, пока заданное условие остается истинным.

Цикл 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.

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду 'стоп'
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