#even и odd - счётчики чётных/нечётных цифр, при первом вызове должны быть 0
def recursive_counter(number, even = 0, odd = 0):
#проверяем, не пора ли остановить рекурсию:
if number <= 0: #дошли до нуля - пора. Кроме того, с отриц. числами будут проблемы.
return even, odd #возвращаем кортеж значений
#отрезаем от числа последнюю цифру делением на 10.
#divmod() - встроенная функция питона
reduced_number, last_digit = divmod(number, 10)
if last_digit % 2 == 0: #последняя цифра чётная
#значит, на одну больше чётную цифру
return recursive_counter(reduced_number, even+1, odd) #уходим в рекурсию
else: #последняя цифра нечётная
#значит, на одну больше нечётную цифру
return recursive_counter(reduced_number, even, odd+1) #уходим в рекурсию
N = 1234567890
even, odd = recursive_counter(N) #распаковываем кортеж, который вернула функция
print(f'В числе {N} есть {even} чётных цифр и {odd} нечётных.')
if __name__ == '__main__':
banner (bytes) – A bytes-like object representing the banner. Could be None to denote removal of the banner.
number1 = message.text.split()[1] #вытащили нужный кусок строки
try:
number_value = int(number1) #int() выбросит исключение ValueError, если строка не является записью числа
if not (0 < number_value <= 1000):
raise ValueError() #мы сами выкинем ValueError, если число недопустимое
except ValueError:
await message.answer('введите число от 1 до 1000') #ругаем пользователя
return #завершаем обработку команды
#если управление дошло досюда, число number_value допустимое.
a = 1
b = a
b += 2
print(a, b) #1 3
a = [1]
b = a
b += [2]
print(a, b) #[1, 2] [1, 2]