Как найти количество четных чисел в числе

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

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

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

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

На чтение 2 мин Просмотров 1.6к. Опубликовано 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

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

Просмотров 9.7к. Обновлено 29 октября 2021

  1. Присвоить переменным-счетчикам четных (even) и нечетных (odd) цифр значение 0.
  2. Пока введенное число не уменьшится до нуля выполнять нижеследующие действия:
    1. Если число четное (делится нацело на 2), значит последняя его цифра четная и надо увеличить на 1 переменную even.
    2. Иначе число нечетное и следует добавить 1 к переменной odd.
    3. Убрать последнюю цифру числа путем деления числа нацело на 10.

Pascal

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


var n: word;
even, odd: byte;
begin
readln(n);
even := 0;
odd := 0;
while n > 0 do begin
if n mod 2 = 0 then
even := even + 1
else
odd := odd + 1;
n := n div 10;
end;
writeln('четных ', even);
writeln('нечетных ', odd);
end.



56709
четных 2
нечетных 3

Язык Си


#include

main() {
int n,even,odd;
scanf("%d",&n);
even = 0; // четные
odd = 0; // нечет.
while (n>0) {
if (n%2 == 0) even += 1;
else odd += 1;
n = n/10;
}
printf("четных - %d, нечетных - %dn", even, odd);
}



100238
четных - 4, нечетных - 2

Python

посчитать четные и нечетные цифры числа python(питон)


n = int(input())
even=odd=0
while n>0:
if n%2 == 0:
even += 1
else:
odd += 1
n = n//10
print("четных - %d, нечетных - %d" % (even, odd))



12098
четных - 3, нечетных - 2

КуМир


алг чет_нечет
нач
цел n, even, odd
ввод n
even := 0
odd := 0
нц пока n > 0
если mod(n,2) = 0 то even := even + 1
иначе odd := odd + 1
все
n := div(n,10)
кц
вывод "Четных: ", even, нс
вывод "Нечетных: ", odd
кон



308591
Четных: 2
Нечетных: 4

Basic-256


input n
even=0
odd=0
while n>0
if n%2 = 0 then
even = even + 1
else
odd = odd + 1
endif
n = n10
endwhile
print "Четных " + even
print "Нечетных " + odd



734721
Четных 2
Нечетных 4

0 / 0 / 0

Регистрация: 21.08.2017

Сообщений: 15

1

Найдите количество четных цифр данного натурального числа

21.08.2017, 10:39. Показов 17892. Ответов 13


Студворк — интернет-сервис помощи студентам

Помогите, пожалуйста, написать код, условия которого таковы: Найдите количество четных цифр данного натурального числа. Использовать цикл while

Найдите количество четных цифр данного натурального числа



0



Эксперт .NET

17164 / 12625 / 3314

Регистрация: 17.09.2011

Сообщений: 20,892

21.08.2017, 10:49

2

Лучший ответ Сообщение было отмечено Walkiria как решение

Решение

Walkiria, после того, как считали число, делайте следующие действия:
1. Проверьте, четное ли оно (умеете?)
2. Если четное, то увеличьте счетчик на единицу
3. Делите число на 10
4. Если число = 0, то выводите значение счетчика, в противном случае goto 1.



0



управление сложностью

1687 / 1300 / 259

Регистрация: 22.03.2015

Сообщений: 7,545

Записей в блоге: 5

21.08.2017, 10:52

3

Проходите циклом каждый элемент массива (строки) (предварительно конвертнув введенное число в массив символов) и проверяете на деление на 2, делится с остатком -значит нечетное, без остатка – четное. (как только определили что четное – инкриментируете переменную, в которой хранится количество четных цифр)



0



netBool

325 / 304 / 173

Регистрация: 16.11.2010

Сообщений: 1,069

Записей в блоге: 9

21.08.2017, 10:55

4

как-то так

C#
1
2
3
4
5
6
            string f = Console.ReadLine();
            int j=0; foreach (char c in f)
            {
                if (Convert.ToInt32(c) % 2 == 0) j++;
            }
            Console.Write(j);



0



Эксперт .NET

17164 / 12625 / 3314

Регистрация: 17.09.2011

Сообщений: 20,892

21.08.2017, 10:57

5

netBool, подайте на вход строку “Мама мыла раму”.



0



jetyb

256 / 229 / 97

Регистрация: 26.10.2012

Сообщений: 674

21.08.2017, 11:04

6

Говорилось же, используя while

C#
1
2
3
4
5
6
7
8
9
10
int SolveTask(int n)
{
     var chetCount = 0;
     while (n > 0)
     {
           n = Math.DivRem(n, 10, out int rem);
           if ((rem & 1) == 0) chetCount++;
     }
     return chetCount;
}



0



netBool

325 / 304 / 173

Регистрация: 16.11.2010

Сообщений: 1,069

Записей в блоге: 9

21.08.2017, 11:24

7

Цитата
Сообщение от kolorotur
Посмотреть сообщение

netBool, подайте на вход строку “Мама мыла раму”.

Согласен, это без проверки

C#
1
2
3
4
5
6
7
            string f = Console.ReadLine();
            int j = 0; foreach (char c in f)
            {
                if (!Char.IsDigit(c)) continue;
                if (Convert.ToInt32(c) % 2 == 0) j++;
            }
            Console.Write(j);

Для реальной задачи так правильней. Но для вузовского задания думаю и предыдущий вариант сгодился бы

Я тут подумал, что можно вообще в одну строчку все засунуть

C#
1
Console.WriteLine(Console.ReadLine().Where(c => Char.IsDigit(c)).Count(c => Convert.ToInt32(c) % 2 == 0));

PS: Валькирия, ты только эту строчку преподу не показывай. Думаю, раскусит



0



Taurusfk

44 / 45 / 41

Регистрация: 28.06.2017

Сообщений: 133

21.08.2017, 23:33

8

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            Console.Write("Введите число : ");
            string str = Console.ReadLine();
            ulong number;
            int counter = 0;
            if (UInt64.TryParse(str,out number))
            {
                foreach (char ch in str)
                {
                    if ((int)ch%2==0)
                    {
                        counter++;
                    }
                }
                Console.WriteLine("В числе {0} - {1} четных цифр", number,counter);
            }
            else
            {
                Console.WriteLine("Ошибка ввода данных!!!");
            }
            Console.WriteLine(new string('-',40));
            Console.WriteLine("Нажмите любую клавишу для продолжения...");
            Console.ReadKey();



0



Эксперт .NET

17164 / 12625 / 3314

Регистрация: 17.09.2011

Сообщений: 20,892

21.08.2017, 23:56

9

netBool, netBool, Taurusfk, каждый раз, когда кто-то решает задачу по работе с числами с помощью строк, где-то мучительной насильственной смертью погибает котенок. Никогда об этом не забывайте.

Если в такую программу подть на ввод строку “00000001”, то натуральное число будет равно единице, а количество четных цифр в единице будет почему-то семь.

Вот товарищ jetyb выше сделал все правильно. В конце, правда, не удержался от бито

дро

любства, ну да ладно.
При работе с числами — работайте с типами, специально заложенными в язык умными дядями для работы с числами.



2



Taurusfk

44 / 45 / 41

Регистрация: 28.06.2017

Сообщений: 133

22.08.2017, 12:10

10

kolorotur,
Стало обидно за тучи безвинно убиенных котят

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
 
namespace EvenDigits
{
    class Program
    {
        static int GetDigits(ulong number)
        {
            int counter = 0;            
            while (number!= 0)
            {
                if ((number - (ulong)(number / 10) * 10) % 2 == 0)
                {
                    counter++;
                }
                number /= 10;
            }            
            return counter;
        }
 
        static void Main(string[] args)
        {          
            Console.Write("Введите число : ");
            string str = Console.ReadLine();
            ulong number;
            if (UInt64.TryParse(str, out number))
            {
                Console.WriteLine("В числе {0} - {1} четных цифр(-ы)", number, GetDigits(number));
            }
            else
            {
                Console.WriteLine("Ошибка ввода данных!!!");
            }
            Console.WriteLine(new string('-', 40));
            Console.WriteLine("Нажмите любую клавишу для продолжения...");
            Console.ReadKey();
        }
 
    }
}



1



kolorotur

Эксперт .NET

17164 / 12625 / 3314

Регистрация: 17.09.2011

Сообщений: 20,892

22.08.2017, 12:18

11

Цитата
Сообщение от Taurusfk
Посмотреть сообщение

C#
1
if ((number - (ulong)(number / 10) * 10) % 2 == 0)

Вот эту часть можно упростить до if (number % 2 == 0), ведь четное число всегда оканчивается четной цифрой.



0



44 / 45 / 41

Регистрация: 28.06.2017

Сообщений: 133

22.08.2017, 12:20

12

kolorotur, согласен, перемудрил



0



Pikemaster

309 / 309 / 215

Регистрация: 24.09.2013

Сообщений: 771

22.08.2017, 15:37

13

C#
1
2
3
4
5
6
7
8
int n = 6012896, count = 0;
 
while (n != 0)
{
    if (n % 2 == 0)
        count++;
    n /= 10;
}



0



Desead

2 / 2 / 0

Регистрация: 14.08.2015

Сообщений: 35

22.08.2017, 21:36

14

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using static System.Console;
 
 
class Program
{
    static void Main()
    {
        do
        {
            int num;
            int count = 0;
            do
            {
                Clear();
                Write("Введите натуральное число: ");
                if (int.TryParse(ReadLine(), out num))
                    if (num > 0) break;
            } while (true);
 
            do
            {
                if (num % 2 == 0) count++;
                num /= 10;
            } while (num>0);
 
            WriteLine("nЧётных чисел: " + count);
 
            Write(new string('_',25)+"nДля выхода нажмите ESC ");
        } while (ReadKey().Key!=ConsoleKey.Escape);
    }
}



0



Суть кода в том что – ‘Пользователь вводит число (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 бронзовых знака

Добавить комментарий