Посчитать четные и нечетные цифры числа
Определить, сколько в числе четных цифр, а сколько нечетных. Число вводится с клавиатуры.
Решение задачи на языке программирования Python
Если число делится без остатка на 2, его последняя цифра четная. Увеличиваем на 1 счетчик четных цифр even. Иначе последняя цифра числа нечетная, увеличиваем счетчик нечетных цифр odd.
В Python операцию нахождения остатка от деления выполняет знак %
.
Чтобы избавиться от младшего уже учтенного разряда, число следует разделить нацело на 10. Деление нацело обозначается двумя слэшами //
.
a = int(input()) even = 0 odd = 0 while a > 0: if a % 2 == 0: even += 1 else: odd += 1 a = a // 10 print(f'Even: {even}, odd: {odd}')
Пример выполнения:
Кроме чисто математического подхода в Python можно решить задачу «через строку». Мы не будем переводить введенное строковое представление числа к целочисленному типу, вместо этого переберем символы строки в цикле for
. Каждый символ преобразуем к числу и проверим на четность.
a = input() even = 0 odd = 0 for i in a: if int(i) % 2 == 0: even += 1 else: odd += 1 print("Even: %d, odd: %d" % (even, odd))
Поскольку количество четных (как и нечетных) цифр ограничено, в программу можно включить что-то типа «базы данных» и проверять каждый символ на вхождение в нее.
a = input() digits = "02468" even = 0 odd = 0 for i in a: if i in digits: even += 1 else: odd += 1 print("Even: %d, odd: %d" % (even, odd))
Обратим внимание, что оператор in
языка Python в заголовке цикла for
обозначает иное, чем в заголовке условного оператора. Логическое выражение i in digits
возвращает истину если i входит в состав digits. В иных случаях — ложь.
Больше задач в PDF
The task is to find the number of odd numbers in an integer.
count_odd_digits(n):
Given a non-negative integer, count how many digits of it are odd numbers.
example:
count_odd_digits(123450) → 3 #digits 1,3, and 5 are odd
I have so far:
def count_odd_digits(n):
ans = 0
for i in str(n):
if int(n) %2 == 1:
ans += 1
elif n[i]==0:
return None
But I am still failing my tests, what is going wrong in my code?
zondo
19.8k8 gold badges44 silver badges83 bronze badges
asked Mar 6, 2016 at 1:08
3
You have several problems:
-
elif n[i] == 0: return None
is completely useless. You never want to returnNone
; you just want to continue. Since all you are doing is continuing, it can just be removed. -
if int(n) % 2 == 1
is testing the wrong thing. You want to checkint(i)
, notint(n)
.
Change the code to this:
def count_odd_digits(n):
ans = 0
for i in str(n):
if int(i) % 2:
ans += 1
return ans
It would be easier to use a generator expression:
def count_odd_digits(n):
return sum(int(i) % 2 for i in str(n))
answered Mar 6, 2016 at 1:14
zondozondo
19.8k8 gold badges44 silver badges83 bronze badges
9
The return None
part will immediatly terminate your function. Also you should convert i
to an integer
not the complete string.
A working function could look like this:
def count_odd_digits(n):
ans = 0
for i in str(n):
if int(i) %2 == 1:
ans += 1
# drop the elif part
# return after the for loop
return ans
count_odd_digits(123450)
answered Mar 6, 2016 at 1:12
MSeifertMSeifert
144k37 gold badges331 silver badges346 bronze badges
Change int(n) to int(i)
def count_odd_digits(n):
ans = 0
for i in str(n):
if int(i) %2 == 1:
ans += 1
return ans
answered Mar 6, 2016 at 1:10
kartikmajikartikmaji
9467 silver badges21 bronze badges
1
Another solution is to avoid converting to strings at all, and only use integers:
def count_odd_digits(n):
ans = 0
while n:
digit = n % 10
if digit % 2:
ans += 1
n //= 10
return ans
answered Mar 6, 2016 at 1:27
AkavallAkavall
81.8k51 gold badges205 silver badges248 bronze badges
0
Перейти к содержанию
На чтение 2 мин Просмотров 1.7к. Опубликовано 27.01.2023
Содержание
- Введение
- Написание кода программы для подсчёта чётных и нечётных цифр числа
- Заключение
Введение
В ходе статьи напишем программу для подсчёта чётных и нечётных цифр в числе на языке программирования Python.
Написание кода программы для подсчёта чётных и нечётных цифр числа
Для начала дадим пользователю возможность ввода числа и создадим две переменные, одна для чётных цифр, вторая для нечётных:
number = int(input('Введите число: '))
# Для чётных цифр
even = 0
# Для нечётных цифр
odd = 0
Создадим цикл while, который не закончится пока number > 0:
number = int(input('Введите число: '))
even = 0
odd = 0
while number > 0:
Внутри цикла зададим условие, если number делится на 2 без остатка, то цифра чётная и прибавляем к even единицу, если условие не сработало, то цифра нечётная и прибавляем единицу к odd:
number = int(input('Введите число: '))
even = 0
odd = 0
while number > 0:
if number % 2 == 0:
even += 1
else:
odd += 1
После условия делим number целочисленно на 10, чтобы избавиться от цифры, которая уже была проверена:
number = int(input('Введите число: '))
even = 0
odd = 0
while number > 0:
if number % 2 == 0:
even += 1
else:
odd += 1
number = number // 10
Выведем результат используя форматирование f-string:
number = int(input('Введите число: '))
even = 0
odd = 0
while number > 0:
if number % 2 == 0:
even += 1
else:
odd += 1
number = number // 10
print(f'Количество чётных цифр: {even}')
print(f'Количество нечётных цифр: {odd}')
Проверка программы:
Введите число: 9876124
Количество чётных цифр: 4
Количество нечётных цифр: 3
Заключение
В ходе статьи мы с Вами написали программу для подсчёта чётных и нечётных цифр в числе на языке программирования Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Суть кода в том что — ‘Пользователь вводит число (a). Найти количество всех нечетных чисел, на диапазоне
Я настрогал пару строчек кода, но все равно не выходит в ответе. Когда ввожу даже 1 число просто ничего не выводиться, и даже причину не могу понять.
a= input('Введите первое число:')
def sum():
if a / 2 == 0:
print ('четное число')
else:
print ('Нечетное число')
GrAnd
13.4k1 золотой знак8 серебряных знаков23 бронзовых знака
задан 15 янв 2022 в 10:37
1
Я так понимаю, тебе нужно найти количество чётных чисел в определенном вводимом диапазоне.
num1 = int(input('Введи первое число: ')) // Пользователь вводит первое число
num2 = int(input ('Введите второе число: ')) // Пользователь вводит второе число
k = 0 // Добавляем переменную куда будем плюсовать количество чётных чисел
for i in range(num1,num2+1): // Создаём цикл в диапазоне введённых цифр (+1 во втором аргументе, потому что в range доходит ДО числа, а не ДО ВКЛЮЧИТЕЛЬНО этого числа)
if i % 2 == 0: // Проверяем на чётность (если чётное делаем:)
k +=1 // Если число чётное +1
print (k)
ответ дан 15 янв 2022 в 11:18
BnLvTBnLvT
285 бронзовых знаков
- Введённое значение преобразовать в число при помощи функции
int()
. - Проверять остаток от деления
a % 2 == 0
. - Ну и функцию таки следует вызвать
sum()
.
a = int(input('Введите первое число: '))
def sum():
if a % 2 == 0:
print ('четное число')
else:
print ('Нечетное число')
sum()
P.S. Вообще-то есть встроенная функция с таким именем, так что называя свою так же вы лишаетесь доступа к ней. Так что лучше не называть что-либо стандартными именами.
ответ дан 15 янв 2022 в 10:48
GrAndGrAnd
13.4k1 золотой знак8 серебряных знаков23 бронзовых знака
Посчитать нечетные цифры числа методом рекурсии?
Добрый день!
Помогите разобраться с рекурсией, застрял на вопросе Посчитать четные и нечетные цифры введенного натурального числа. Ниже мой код
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)
-
Вопрос заданболее года назад
-
1889 просмотров
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
И у вас все равно будут выводиться нули. Объявляйте переменные even odd вне функции и передавайте их в эту функцию в качестве параметра.
Если у вас python 3.6 и выше, то там завезли f-строки. Они поудобнее, ваш вывод был бы более читабелен
print(f"четных - {even}, нечетных - {odd}")
(return в этой строке не нужен, как и в остальных случаях)
А рекурсивно — это требование задачи? Или вы посчитали, что так будет лучше?
-
Показать ещё
Загружается…
26 мая 2023, в 01:06
500 руб./за проект
26 мая 2023, в 00:08
2500 руб./за проект
25 мая 2023, в 22:01
2000 руб./за проект