Цикл 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
работает до тех пор, пока в числе есть необработанные цифры. Тело цикла содержит:
- Получение последней цифры:
d = n % 10
. - Обработку последней цифры.
- Удаление последней цифры числа:
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