что делать с ошибкой TypeError: not all arguments converted during string formatting

Задача: Найти сумму четных елементов списка и отдельно не четных. Вродебы все правильно но програмы выдает ошибку TypeError: not all arguments converted during string formatting. Что не так введите сюда описание изображения


Ответы (2 шт):

Автор решения: Evrik

Во-первых, не называйте переменные именами встроенных функций (list, str). Во-вторых input всегда возвращает строку, для строк символ % используется для постановки переменных в форматируемую строку, а placeholder-ов для помещения переменной в этой строке нет. Вот и получаете ошибку. Для выполнения математических операций ввод нужно преобразовывать в число. Ваш код может выглядеть так:

elements = list(map(int, input())) # преобразуем ввод в список чисел
even = 0
not_even = 0
for el in elements:
    if el % 2 == 1:
        not_even += 1
    elif el == 0 or el % 2 == 0:
        even += 1

print(elements)
print(even)
print(not_even)
    
→ Ссылка
Автор решения: mymedia

Раз выдаёт ошибку — значит, не правильно. Проблема в вашем коде из-за того, что слева от оператора % в переменной i оказывается строка из одного символа.

print("введите последовательность чисел через пробел и нажмите Enter")
sequence = map(int, input().split())

even, uneven = 0, 0
for number in sequence:
    if number % 2:
        uneven += number
    else:
        even += number

print(f"сумма чётных   = {even}")
print(f"сумма нечётных = {uneven}")
→ Ссылка