0 / 0 / 0
Регистрация: 21.01.2023
Сообщений: 1

Вывод чётной суммы цифр из чисел в списке

22.01.2023, 00:25. Показов 3111. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,
проблема с задачей. Нужно написать программу, которая из списка выведет числа, у которых сумма цифр чётная и останавливается перед 237. Порядок чисел не менять.
(386: 3+8+6 = 17(не выводится); 462: 4+6+2 = 12(выводится)

Сам список:

[386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,]

Следующий код основан на похожей задаче. Но условие в том, что из списка выводятся чётные числа без суммы отдельных цифр:

Python
1
2
3
4
5
6
7
8
numbers = [ 386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,
                 399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217 ]
for x in range(len(numbers)):
     y=numbers.pop(0)
     if (y % 2) == 0:
         print(y)
     elif y == 237:
         break
Можете помочь? Есть ли способ переделать данный код под нужные условия(из вывода чётных чисел сделать вывод чисел с чётной суммой цифр)? Или стоит писать код с нуля?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2023, 00:25
Ответы с готовыми решениями:

Вывод простых чисел с чётной суммой цифр в диапазоне
Напишите программу, которая выводит все простые числа с чётной суммой цифр в диапазоне от K до N ( 2 ≤ K ≤ N ≤ 100000 ). Входные...

Вывод первых 20 цифр результата суммы ста, 50-значных чисел
в общем реализовать на паскале вывод первых 20 цифр результата суммы ста, 50-значных чисел: ...

Ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр
Написать программу, осуществляющую ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. Подключить...

9
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
22.01.2023, 09:37
Цитата Сообщение от zer0_p0int Посмотреть сообщение
у которых сумма цифр чётная
и где в коде находится сумма цифр числа?
0
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
22.01.2023, 09:51
zer0_p0int, Просто обратись к числу как к строке:
Python
1
2
3
4
5
6
7
8
numbers = [ 386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217]
 
for num in numbers:
    if num == 237: break
    sum = 0
    for char in str(num):
        sum += int(char)
    if not sum%2: print(f"Число: {num}. Сумма цифр: {sum}.")
1
132 / 96 / 40
Регистрация: 24.03.2022
Сообщений: 357
22.01.2023, 11:20
Python
1
2
3
4
5
6
numbers = [ 386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217]
for x in numbers:
    if x == 237:
        break
    if sum(list(map(int,list(str(x))))) % 2 == 0:
        print(x)
Исходный код твой странный. Непонятно зачем там переменная "y" и метод pop
Python
1
2
3
4
5
6
7
numbers = [ 386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,
                 399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217]
for x in numbers:
     if (x % 2) == 0:
         print(x)
     elif x == 237:
         break
Добавлено через 7 минут
Вот понятнее твой код и с правильным результатом
Python
1
2
3
4
5
6
7
8
9
10
numbers = [ 386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,
                 399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217]
for x in numbers:
    if x == 237:
        break
    s = 0
    for cymbol in str(x):
        s += int(cymbol)
    if (s % 2) == 0:
        print(x)
1
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
22.01.2023, 12:16
piton21, неплохо, что насчет сравнить мой код и ваш?)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
23.01.2023, 17:26
Python
1
2
3
4
5
6
numbers = [ 386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217]
for num in numbers:
    if num == 237: break
    s = num // 100 + num // 10 % 10 + num % 10
    if s % 2 == 0:
        print(s)
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
23.01.2023, 18:04
Цитата Сообщение от rim41 Посмотреть сообщение
Просто обратись к числу как к строке
не оптимально. перевести число в строку потом каждую цифру опять в число. целочислительное деление решает задачу без преобразований.
Parramon, тоже чуть косяк.
Цитата Сообщение от zer0_p0int Посмотреть сообщение
которая из списка выведет числа
а вы выводите сумму цифр числа
Python
1
2
3
for num in numbers:
    if num == 237: break
    if (num // 100 + num // 10 % 10 + num % 10) % 2 == 0: print(num)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
23.01.2023, 20:08
Semen-Semenich, Да, косяк. Не внимателен. В этом случае да, без переменной можно обойтись.

Добавлено через 11 минут
piton21, Для наглядности:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from timeit import timeit
def foo(numbers):
    r = []
    for num in numbers:
        if num == 237: break
        if (num // 100 + num // 10 % 10 + num % 10) % 2 == 0: r.append(num)
    return r
 
def bar(numbers):
    r = []
    for x in numbers:
        if x == 237:
            break
        s = 0
        for cymbol in str(x):
            s += int(cymbol)
        if (s % 2) == 0:
            r.append(x)
    return r
Bash
1
2
0.23956000000000002
0.9645090999999999
0
23.01.2023, 20:22

Не по теме:

Отличный вариант! Поленился здесь в математику, пошёл напролом

0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
23.01.2023, 20:30
Упс... Не до конца скопировал...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from timeit import timeit
def foo(numbers):
    r = []
    for num in numbers:
        if num == 237: break
        if (num // 100 + num // 10 % 10 + num % 10) % 2 == 0: r.append(num)
    return r
 
def bar(numbers):
    r = []
    for x in numbers:
        if x == 237:
            break
        s = 0
        for cymbol in str(x):
            s += int(cymbol)
        if (s % 2) == 0:
            r.append(x)
    return r
 
print(timeit('foo([386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217])', number=100000, setup='from __main__ import foo'))
print(timeit('bar([386,462,47,418,907,344,236,375,823,566,597,978,328,615,953,345,399,162,758,219,918,237,412,566,826,248,866,950,626,949,687,217])', number=100000, setup='from __main__ import bar'))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2023, 20:30
Помогаю со студенческими работами здесь

Списки. сформировать список чисел, кратных 3, но не находящихся на четной позиции в другом списке
Доброго времени суток. Решаю задачу: Дан список целых чисел. Составить из его элементов список чисел, кратных 3, но не находящихся на...

Количество двузначных чисел с четной суммой цифр
Насколько плохой этот код? #include <iostream> #include <iomanip> #include <cstdlib> #include <cmath> using namespace std; ...

даны два натуральных числа найти разность и произведение суммы цифр этих чисел.вычисление суммы цифр оформить в виде числа...
Даны два натуральных числа a,b.Найти разность и произведение суммы цифр этих чисел.Вычисление суммы цифр числа оформить в виде...

Нахождение в строке всех четных цифр, суммы всех чисел и вывод заглавных букв строки
Всем доброго времени суток! Нужно задать через консоль строку состоящую из символов заглавных и строчных латинских букв и цифр, после ...

Найти количество четырехзначных чисел, у которых сумма крайних цифр в 2 раза больше суммы средних цифр
Найти количество четырехзначных чисел, у которых сумма крайних цифр в 2 раза больше суммы средних цифр, а сами числа кратны 3. Напишите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru