#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 допустимое.
while ((sel = select(s, &rfd, NULL, NULL, &time_val)) <= 0) {
res = sendto(s, dns_datagram, data_curlen, flags, (struct sockaddr*) &addr,
sizeof(struct sockaddr_in));
if (res < 0) {
printf("res = %d\nError. Server offline?\n", res);
printf("sel = %d\n", sel); // out 0
}
FD_ZERO(&rfd);
FD_SET(s, &rfd);
}
nfds This argument should be set to the highest-numbered file
descriptor in any of the three sets, plus 1. The
indicated file descriptors in each set are checked, up to
this limit (but see BUGS).
nfds Ignored. The nfds parameter is included only for compatibility with Berkeley sockets.
a = 1
b = a
b += 2
print(a, b) #1 3
a = [1]
b = a
b += [2]
print(a, b) #[1, 2] [1, 2]