def count_numb(n):
even = odd = 0
if n == 0:
return print("четных - %d, нечетных - %d" % (even, odd))
elif n % 2 == 0:
even += 1
n == n // 10
return count_numb(n)
else:
odd += 1
n == n // 10
return count_numb(n)
n = int(input("Введите число: "))
count_numb(n)
def count_even_odd(n):
# на случай, если изначально n - отрицательное число
n = abs(n)
# если n чётное - последняя цифра тоже чётная
result = (1, 0) if n % 2 == 0 else (0, 1)
# если n сотоит из одной цифры - прерываем рекурсию
if n < 10:
return result
# иначе - отрезаем от n последнюю цифру,
# вызываем функцию рекурсивно и суммируем результат
return tuple(map(sum, zip(count_even_odd(n // 10), result)))
def count_numb2(n, even=0, odd=0):
if n == 0:
print(f"Количество четных и нечетных цифр в числе равно: ({even}, {odd})")
else:
cur_n = n % 10
n = n // 10
if cur_n % 2 == 0:
even += 1
else:
odd += 1
return count_numb2(n, even, odd)
n = int(input("Введите число: "))
count_numb2(n)
#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} нечётных.')
n == n // 10
n = n // 10
print(f"четных - {even}, нечетных - {odd}")
(return в этой строке не нужен, как и в остальных случаях)