Код програми на Python:
someArray = [3, 1, 4, 2, 10, 36, 8, 11, 28, 999]
for number in someArray:
if number % 2 == 1:
Пояснення:
С помощью цикла мы пересматриваем все елементы ( числа ) в массиве, и проверяем остачу от деления на 2, если она равна 1, то число нечетное, добавляем его к переменной sum. После выполнения алгоритма выводим на екран эту переменную.
Например:
33 % 2 //Вывод 1
20 % 2 //Вывод 0
15 % 2 //Вывод 1
100 % 2 //Вывод 0
Источник: megaznanija.com
Найдите сумму нечетных чисел из строки чисел в Python
Вопрос просит найти сумму нечетных чисел, когда дана строка чисел. так, например, если нам дано «123», мы должны получить сумму 4.
Это моя попытка, и она возвращает «4», что неверно.
def sumoddnum(s): total= 0 for i in range(len(s)): if i % 2 == 1: total += i return total print(sumoddnum(‘12345’))
Я также пробовал преобразовать s в целые числа, но он продолжает давать мне ошибку «int is not iterable»
Как получить список четных чисел. А также, список нечетных чисел. Уроки Python. Александр Килинкаров
def sumoddnum(s): total= 0 s= int(s) for i in s: if i % 2 == 1: total += i return total print(sumoddnum(‘12345’))
user12462930 01 дек ’19 в 10:07 2019-12-01 10:07
2019-12-01 10:07
6 ответов
Мне нравится использовать здесь подход регулярных выражений. Мы можем применить шаблон регулярного выражения [13579] во входную строку, затем используйте понимание списка в полученном списке нечетных цифр, чтобы найти сумму:
num = «123» odds = re.findall(r'[13579]’, num) sum = sum(int(odd) for odd in odds) print(«the sum is: » + str(sum))
The sum is: 4
user1863229 01 дек ’19 в 10:24 2019-12-01 10:24
2019-12-01 10:24
Причина, по которой ваша программа не работает, заключается в строке:
for i in range(len(str)):
здесь вы берете все значения i от 0 до длины строки (без учета длины).
Это означает, что вы складываете все нечетные числа от 0 до длины строки.
Вместо этого сделайте это:
for i in str:
это даст вам каждый символ в строке как i. Сейчас:
i = int(i)
преобразует его в int.
if i%2 == 1: total+=i
окончательный код будет:
def sumoddnum(s): total= 0 for i in s: i = int(i) if i % 2 == 1: total += i return total print(sumoddnum(‘12345’))
user8318833 01 дек ’19 в 10:54 2019-12-01 10:54
2019-12-01 10:54
Это должно сработать для вас:
def sumoddnum(s): return sum(0 if int(i) % 2 == 0 else int(i) for i in s)
или если вы хотите сохранить свою первую попытку, вам следует повторить str затем проверяйте условие на каждом int характера:
def sumoddnum(s): total= 0 for i in s: if int(i) % 2 == 1: total += int(i) return total print(sumoddnum(‘12345’))
user4413799 01 дек ’19 в 10:17 2019-12-01 10:17
2019-12-01 10:17
Ваш первый подход не работает, потому что на самом деле вы добавляете к сумме «индексы» s не элементы. То, что может иметь работа, меняет вашу for цикл для перебора элементов, а не их позиций.
Посчитать четные и нечетные цифры числа. Решение задачи на Python
Тогда имейте в виду, что элементы строки являются символами, поэтому требуется преобразование в int. Это можно сделать с помощью встроенного int функция всякий раз, когда символ фактически представляет собой цифру.
def sumoddnum(s): total= 0 for i in s: if int(i) % 2 == 1: total += int(i) return total
Теперь вы можете задаться вопросом
Какая долгая функция для такой простой задачи!
и вы будете абсолютно правы. К счастью, в Python есть средства понимания, которые позволяют сократить некоторые из for петли и встроенные sum функция, назначение которой не требует пояснений, но вам нужно помнить, что она принимает итерации в качестве входных данных.
Результат, который вы можете получить, будет примерно таким:
def sumoddnum(s): return sum(int(i) for i in s if int(i) % 2 == 1)
С Python 3.8 вы также можете использовать совершенно новый оператор моржа:
def sumoddnum(s): return sum(num for i in s if (num := int(i)) % 2 == 1)
Проблема с вашим вторым подходом уже объясняется самим интерпретатором Python. Вы преобразовали свою строку в целое число, и нет встроенного способа перебора целых чисел. Вам нужно будет найти и реализовать свой собственный способ перебора целых цифр (подсказка: используйте остаток по модулю 10).
Источник: stackru.com
Python. Как написать функцию, возвращающую сумму всех нечетных .
Напишите функцию fun(), которая возвращает сумму всех нечетных произведений в таблице умножения из учебника (таблица умножения от 1 до 10 включительно).
комментировать
в избранное
vdtes t [30.5K]
6 месяцев назад
Функция вычисления нечётных произведений из таблицы умножения:
____s=0 #начальное значение суммы
____for a in range(1,11): # первый сомножитель
____________for b in range(1,11): #второй сомножитель
________________ ____p=a*b #произведение
________________ ____if p%2==1: #условие нечетности
________________ ________s=s+p #сумма произведений
____return s
Вот как выглядит эта функция в системе Python
Источник: www.bolshoyvopros.ru