Цикл while

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

 

Цикл while имеет следующий синтаксис:

while condition:
    # тело цикла

Код из тела цикла выполняется, пока условие condition истинно.

 

Например, цикл ниже выводит i, пока i < 3:

i = 0
while i < 3:
    print(f"{i}")
    i += 1
0
1
2

Если бы строка i += 1 отсутствовала в примере выше, то цикл бы повторялся вечно, формируя так называемый бесконечный цикл.

Пример 1

Выведите в порядке возрастания все четные натуральные числа, не превосходящие число n.

n = int(input())
i = 2
while i <= n:
    print(f"{i}", end=" ")
    i += 2
6
2 4 6 

Пример 2

Выведите число, следующее за n, кратное \(10\).

n = int(input())
n += 1
while n % 10 != 0:
    n += 1
print(f"{n}")
7
10

Пример 3

Задана последовательность слов. Концом последовательности является слово «END». При этом само слово «END» не входит в последовательность, лишь символизируя её окончание. Найдите количество слов в последовательности.

s = input()
k = 0
while s != 'END':
    k += 1
    s = input()
print(f"{k}")
kcdim
coding
END
2

Пример 4

Задана последовательность пар целых чисел (входные данные заканчиваются двумя нулями). Найдите сумму каждой пары чисел.

a, b = map(int, input().split())
while a > 0 or b > 0:
    s = a + b
    print(f"{s}")
    a, b = map(int, input().split())
2 3
4 0
0 1
0 0

5
4
1

Практические задания

Цифры числа

Используя цикл while и операции % и //, можно обработать цифры числа с произвольным количеством разрядов (цифр).

 

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

n = int(input())
while n > 0:
    d = n % 10
    # код обработки последней цифры
    n //= 10

Цикл while работает до тех пор, пока в числе есть необработанные цифры. Тело цикла содержит:

 

  1. Получение последней цифры: d = n % 10.
  2. Обработку последней цифры.
  3. Удаление последней цифры числа: n //= 10

 

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

Пример 1

Посчитайте, сколько раз цифра d встречается в числе x.

x = int(input())
d = int(input())
cnt = 0
while x > 0:
    l = x % 10
    if l == d:
        cnt += 1
    x //= 10
print(f"{cnt}")
373
3
2

Пример 2

Посчитайте количество чётных цифр всех чисел от a до b включительно.

a, b = map(int, input().split())
cnt = 0
for i in range(a, b + 1):
    x = i
    while x > 0:
        d = x % 10
        if d % 2 == 0:
            cnt += 1
        x //= 10
print(f"{cnt}")
20 22
5

Пример 3

Дан список a, состоящий из n чисел. Найдите сумму цифр всех чисел списка.

n = int(input())
a = list(map(int, input().split()))
s = 0
for ai in a:
    while ai > 0:
        d = ai % 10
        s += d
        ai //= 10
print(f"{s}")
4
13 5 100
10

Практические задания