Как найти количество нечетных цифр в питоне

Посчитать четные и нечетные цифры числа

Определить, сколько в числе четных цифр, а сколько нечетных. Число вводится с клавиатуры.

Решение задачи на языке программирования 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's user avatar

zondo

19.8k8 gold badges44 silver badges83 bronze badges

asked Mar 6, 2016 at 1:08

Jessica's user avatar

3

You have several problems:

  • elif n[i] == 0: return None is completely useless. You never want to return None; 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 check int(i), not int(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

zondo's user avatar

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

MSeifert's user avatar

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

kartikmaji's user avatar

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

Akavall's user avatar

AkavallAkavall

81.8k51 gold badges205 silver badges248 bronze badges

0

Перейти к содержанию

На чтение 2 мин Просмотров 1.7к. Опубликовано 27.01.2023

Содержание

  1. Введение
  2. Написание кода программы для подсчёта чётных и нечётных цифр числа
  3. Заключение

Введение

В ходе статьи напишем программу для подсчёта чётных и нечётных цифр в числе на языке программирования 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. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin

Суть кода в том что — ‘Пользователь вводит число (a). Найти количество всех нечетных чисел, на диапазоне
Я настрогал пару строчек кода, но все равно не выходит в ответе. Когда ввожу даже 1 число просто ничего не выводиться, и даже причину не могу понять.

a= input('Введите первое число:')
def sum():
     if a / 2 == 0:
           print ('четное число')
     else:
          print ('Нечетное число')

GrAnd's user avatar

GrAnd

13.4k1 золотой знак8 серебряных знаков23 бронзовых знака

задан 15 янв 2022 в 10:37

monkeykong's user avatar

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

BnLvT's user avatar

BnLvTBnLvT

285 бронзовых знаков

  1. Введённое значение преобразовать в число при помощи функции int().
  2. Проверять остаток от деления a % 2 == 0.
  3. Ну и функцию таки следует вызвать sum().
a = int(input('Введите первое число: '))
def sum():
     if a % 2 == 0:
          print ('четное число')
     else:
          print ('Нечетное число')
sum()

P.S. Вообще-то есть встроенная функция с таким именем, так что называя свою так же вы лишаетесь доступа к ней. Так что лучше не называть что-либо стандартными именами.

ответ дан 15 янв 2022 в 10:48

GrAnd's user avatar

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 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Как найти индийский магазин в москве
  • Не удалось заблокировать таблицу sessions 1с как исправить
  • Err timed out как исправить на телефоне android
  • Как составить бизнес план практическое руководство
  • Как найти каноническое разложение числа