Питон цикл while and

Цикл while в Python

Цикл while («пока») позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается после ключевого слова while и проверяется до выполнения тела цикла.

Цикл while используется, когда невозможно определить точное количество повторений цикла.

i = 0 # объявление переменной i для условия цикла
while i 5 : # ключевое слово ‘while’ и условие выполнение цикла
# тело цикла
print (i) # вывод значения переменной i
i += 1 # увеличение значения переменной i на единицу

Цикл while может быть бесконечным.

i = 0
while True : # условие всегда истинно
print (i)
i += 1

# Вывод:
>> 0
>> 1
>> 2
>> 3
>> 4
.
>> 999
.
# Это может продолжаться долго.

Выполнение цикла можно прерывать с помощью оператора break.

i = 0
while 1 : # условие всегда истинно
if i == 3 : # если i равно 3, то вызываем оператор break
break # оператор break прерывает выполнение цикла
print (i)
i += 1

Оператор continue начинает повторение цикла заново.

i = 0
while i 5 :
i += 1 #
if i % 2 == 1 : # если значение i нечетно, то вызываем оператор continue
continue # оператор continue начинает повторение цикла заново
# в случае вызова continue код ниже не выполнится
print (i)

Как и для цикла for, для цикла while мы можем записать конструкцию else.

x = 1
while x 5 :
print (x)
x += 1
else :
print ( ‘Цикл завершен’ )

Примеры

# Пользователь вводит числа A и B (A > B). Выведите все числа от A до B включительно.

A = int ( input ( ‘Введите число: ‘ ))
B = int ( input ( ‘Введите число: ‘ ))

# Пользователь вводит числа до тех пор, пока не введет 0.
# Выведите количество введенных чисел (0 считать не нужно).

n = int ( input ( ‘Введите число: ‘ ))
counter = 0 # счетчик введенных чисел
while n: # n неявно преобразуется в тип bool
# если n равно 0, то выполнение цикла прервется
n = int ( input ( ‘Введите число: ‘ )) # вводим очередное число
counter += 1 # увеличиваем счетчик

print ( f ‘Количество чисел ‘ )

# Ввод:
>> 1
>> 10
>> 100
>> 1000
>> 0
# Вывод:
>> Количество чисел 4

# Пользователь вводит число N (N > 1). Выведите его наименьший делитель.
N = int ( input ( ‘Введите число: ‘ ))
div = 2

while N % div != 0 :
div += 1
print ( f ‘Наименьший делитель равен ‘ )

# Ввод:
>> 10
# Вывод:
>> Наименьший делитель равен 2

# Ввод:
>> 15
# Вывод:
>> Наименьший делитель равен 3

# Ввод:
>> 17
# Вывод:
>> Наименьший делитель равен 17

Решение задач

Пользователь вводит числа A и B (A > B). Выведите четные числа от A до B включительно.

Пользователь вводит числа A и B (A # Ввод:
>> 1
>> 15
# Вывод:
>> 3
>> 6
>> 9
>> 12
>> 15

Пользователь вводит числа до тех пор, пока не введет 0. Выведите сумму введенных чисел (0 считать не нужно).

# Ввод:
>> 1
>> 15
>> 10
>> 11
>> 2
>> 0
# Вывод:
>> Сумма равна: 39

Пользователь вводит числа до тех пор, пока не введет 0. Выведите максимальное введенное число (0 считать не нужно).

# Ввод:
>> 1
>> 15
>> 10
>> 11
>> 2
>> 0
# Вывод:
>> Максимум равен: 15

Пользователь вводит числа до тех пор, пока не введет 0. Выведите минимальное введенное число (0 считать не нужно).

# Ввод:
>> 1
>> 15
>> 10
>> 11
>> 2
>> 0 # 0 не входит в последовательность
# Вывод:
>> Минимум равен: 1

Пользователь вводит число N. Выведите факториал число N. Факториал числа N — это произведение всех чисел от 1 до N включительно. Например, факториал числа 5 равен 120.

7. Фибоначчи (финальный босс)

Пользователь вводит число N. Выведите N-ное по счету число Фибоначчи. Последовательность чисел Фибоначчи рассчитывается по такой формуле: F(1) = 1, F(2) = 1, F(K) = F(K-2) + F(K-1). Идея такая: каждое следующее число равно сумму двух предыдущих.

Первые 10 чисел последовательности: 1 1 2 3 5 8 13 21 34 55 .

Источник

Питон цикл while and

Цикл while также часто называют бесконечным, поскольку он может выполняться до тех пор, пока пользователь не остановит его нажатием определенной клавиши. Бесконечные циклы можно создавать намеренно – для выполнения фонового скрипта, игры, прикладной программы. Но иногда цикл while может стать бесконечным из-за ошибки. Например, если в приведенном выше коде не указать ввод новой переменной n = int(input()) в теле цикла, while будет бесконечно выводить одно и то же значение, пока пользователь не остановит выполнение программы нажатием Ctrl + C .

Управление бесконечным циклом while в Питоне

Самый простой способ управления бесконечным циклом – использование оператора break . В приведенном ниже коде список lst генерируется случайным образом, и до начала цикла его длина неизвестна. Однако выполнение цикла можно оставить, как только список опустеет в результате многократного выполнения операции pop () :

import random lst = [i for i in range(random.randint(5, 500))] while True: if not lst: break print(lst.pop()) 

Если выполнение цикла не остановить сразу же, как только список опустеет, появится ошибка:

IndexError: pop from empty list 

Оператор break также помогает сократить количество итераций и прекратить выполнение программы, как только нужное решение найдено. Например, таким образом можно найти наименьший делитель числа n, отличный от 1:

n = int(input()) i = 2 while True: if n % i == 0: break i += 1 print(i) 

Помимо break , управлять бесконечным циклом можно с помощью флагов (сигнальных меток). В приведенном ниже примере программа бесконечно запрашивает у пользователя ввод любого слова, пока пользователь не введет exit . Это событие меняет статус цикла на False , и работа программы завершается:

text = 'Введите любое слово: ' text += '\nИли введите exit для выхода: ' active = True while active: message = input(text) if message == 'exit': active = False else: print(message) 

Пропуск итераций в цикле while

Оператор continue можно использовать для пропуска операций, если элементы не соответствуют заданным критериям. Этот код работает, пока не будет сформирован список из 5 элементов – при этом в список не включаются числа в диапазоне между 90 и 120, а также число 50:

Если пользователь введет набор цифр 45 50 121 119 95 105 3 4 7 , в список будут добавлены только числа, соответствующие критериям:

Особенности цикла while

1. В цикле while можно использовать опциональный параметр else . В этом примере процедура pop () выполняется, пока список не опустеет, после чего выводится сообщение Список пуст :

import random lst = [i for i in range(random.randint(5, 500))] while len(lst) > 1: print(lst.pop()) else: print('Список пуст') 

2. В цикле while можно использовать любое количество условий и условных операторов and , or , и not :

n = int(input()) while True: if n == 0: break elif n > 50 or n  

3. Цикл while может быть вложенным. Этот код выводит простые числа из диапазона от 2 до 100:

i = 2 while(i < 100): j = 2 while j i / j: print(f' - простое число') i = i + 1 

4. В качестве вложенных циклов while могут включать в себя циклы for . Этот код, к примеру, будет бесконечно печатать цифры в диапазоне от 0 до 5:

while True: for i in range(5): print(i) 

5. Любой цикл for можно заменить циклом while, но обратное возможно только в том случае, когда количество итераций можно определить до начала цикла. К примеру, эти циклы while и for равнозначны – оба печатают цифры от 0 до 9:

А этот цикл while заменить циклом for невозможно – программа будет бесконечно возводить в квадрат все введенные пользователем числа, пока не получит 0 :

n = int(input()) while True: if n == 0: break print(n ** 2) n = int(input()) 

Практика

Задание 1

Напишите программу, которая принимает на вход целые числа и вычисляет их сумму, пока пользователь не введет 0.

summa = 0 while True: n = int(input()) summa += n if n == 0: break print(summa) 

Задание 2

Напишите программу, которая получает от пользователя число n > 100, и вычисляет (без использования методов строк) произведение цифр, из которых n состоит.

n = int(input()) prod = 1 while n: prod *= n % 10 n //= 10 print(prod) 

Задание 3

Напишите программу, которая получает на вход два числа a и b , и находит наименьшее число c , которое без остатка делится на a и b.

a, b = int(input()), int(input()) c = a while c % b: c += a print(c) 

Задание 4

Напишите программу, которая составляет строку из полученных от пользователя слов, пока длина строки не достигнет 50 символов. Слова, начинающиеся с гласных, в строку не включаются.

о бойся Бармаглота сын он так свиреп и дик а в глуще рымит 
бойся Бармаглота сын так свиреп дик в глуще рымит 

Задание 5

Напишите программу для конвертации числа из десятичного системы в двоичную без использования функции bin () .

n = int(input()) result = '' while n > 0: result = str(n % 2) + result n = n // 2 print(result) 

Задание 6

Напишите программу, которая получает на вход число и без использования строковых методов переставляет цифры в обратном порядке.

n = int(input()) rev = 0 while n!= 0: r = n % 10 rev = rev * 10 + r n = n // 10 print(rev) 

Задание 7

Напишите программу для вычисления факториала числа n без использования функции math.factorial() .

n = int(input()) fact = 1 while n > 1: fact *= n n -= 1 print(fact) 

Задание 8

Напишите программу, которая получает от пользователя число n и определяет, является ли оно простым, или у него есть делители, кроме 1 и самого себя.

60 делится на 2 60 делится на 3 60 делится на 4 60 делится на 5 60 делится на 6 60 делится на 10 60 делится на 12 60 делится на 15 60 делится на 20 60 делится на 30 Таким образом, 60 не является простым числом 
n = int(input()) flag = False i = 2 while i < n: if n % i ==0: flag = True print(f'делится на ') i += 1 if flag: print(f'Таким образом, не является простым числом') else: print(f' - простое число') 

Задание 9

Напишите программу, использующую вложенный цикл while для вывода треугольника размером n x n х n , состоящего из символов * .

n = int(input()) i, j = 0, 0 while i < n: while j  

Задание 10

Напишите программу для запоминания английских названий месяцев:

1. Русские названия месяцев выводятся в случайном порядке с помощью метода random . shuffle () .

2. Пользователь получает три попытки для написания правильного названия на английском.

3. После трех неверных попыток программа переходит к другому слову.

Месяц март по-английски называется: march Месяц январь по-английски называется: January Месяц август по-английски называется: august Месяц май по-английски называется: may Месяц апрель по-английски называется: aprile Неверно! Осталось попыток: 2 Месяц апрель по-английски называется: aprill Неверно! Осталось попыток: 1 Месяц апрель по-английски называется: appril Неверно! Осталось попыток: 0 Попытки исчерпаны! Месяц июль по-английски называется: july Месяц сентябрь по-английски называется: september Месяц июнь по-английски называется: june Месяц октябрь по-английски называется: october Месяц ноябрь по-английски называется: november Месяц декабрь по-английски называется: december Месяц февраль по-английски называется: february 
Конец игры Количество правильных ответов: 11 Число ошибок: 3 
import random correct, wrong, attempts = 0, 0, 3 months = rand_keys = list(months.keys()) random.shuffle(rand_keys) for key in rand_keys: counter = 0 while counter < attempts: spelling = input(f'Месяц по-английски называется: ') if spelling.title() == monthsПитон цикл while and: correct += 1 break else: counter += 1 wrong += 1 print(f'Неверно! Осталось попыток: ') else: print(f'Попытки исчерпаны!') print('Конец игры') print(f'Количество правильных ответов: ') print(f'Число ошибок: ') 

Подведем итоги

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

В следующей статье приступим к изучению функций.

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
  6. Методы работы со словарями и генераторами словарей
  7. Методы работы с кортежами
  8. Методы работы со множествами
  9. Особенности цикла for
  10. Условный цикл while
  11. Функции с позиционными и именованными аргументами
  12. Анонимные функции
  13. Рекурсивные функции
  14. Функции высшего порядка, замыкания и декораторы
  15. Методы работы с файлами и файловой системой
  16. Регулярные выражения
  17. Основы скрапинга и парсинга
  18. Основы ООП: инкапсуляция и наследование
  19. Основы ООП – абстракция и полиморфизм
  20. Графический интерфейс на Tkinter
  21. Основы разработки игр на Pygame
  22. Основы работы с SQLite
  23. Основы веб-разработки на Flask
  24. Основы работы с NumPy

Источник

Читайте также:  Php find in array and delete
Оцените статью