Обработка цифт числа [ Python 3 ]
При изучении целых чисел (тип данных int
), мы говорили про операцию целочисленного деления //
и операцию нахождения остатка от деления одного целого числа на другое %
. Используя цикл while
и две данных операции, можно обработать цифры числа с произвольным количеством разрядов (цифр).
Пусть дано натуральное число n
. Тогда:
- результатом операции
n % 10
– является последняя цифра числа; - результатом операции
n // 10
– является число с удаленной последней цифрой.
Напишем программу, которая считывает натуральное число (целое положительное) и обрабатывает его цифры.
n = int(input())
while n != 0: # пока в числе есть цифры
last_digit = n % 10 # получить последнюю цифру
# код обработки последней цифры
n = n // 10 # удалить последнюю цифру из числа
Цикл while
работает до тех пор пока в числе есть необработанные цифры. Тело цикла содержит:
- процедуру получения последней цифры
last_digit = n % 10
; - код обработки последней цифры;
- процедуру удаления последней цифры из числа
n = n // 10
.
В качестве процедуры обработки может быть все, что угодно: вывод цифр, нахождение суммы, произведения цифр, нахождение наибольшей или наименьшей цифры, подсчет цифр удовлетворяющих некоторому условию и т.д.
Напишем программу, которая определяет есть ли в числе цифра 7.
num = int(input())
has_seven = False # сигнальная метка
while num != 0:
last_digit = num % 10
if last_digit == 7:
has_seven = True
num = num // 10
if has_seven == True:
print('YES')
else:
print('NO')
Нужно обратить внимание, что переменной num необходимо явно задавать тип int в обоих случаях. Иначе на неотрицательность будет проверяться строковая переменная. Будет выведено сообщение об ошибке.
num = int(input())