Операции с элементами списка

Допустим, надо провести какие-нибудь математические операции, объединяющие все элементы списка в одно общее значение, и при этом отбросить некорректные значения.

Почему вот такой код работает некорректно (интересует именно момент проверки на число isdigit () )?:

def sum_array(array):

    summ = 0

    for number in array:
        if number.isdigit ():
            summ += number
    return summ

скрин с ошибкой


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

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

Не знаю что именно вы имели ввиду, но всё работает -_-

Единственная проблема - если вы хотите получить в сумме целое число, то надо делать примерно так:

array = ['654','abc','456']
summ = 0
for number in array:
    if number.isdigit():
        summ += int(number)
print(summ)

Иначе, если нужна строка, то так:

array = ['654','abc','456']
summ = ''
for number in array:
    if number.isdigit():
        summ += number
print(summ)
→ Ссылка
Автор решения: Zhihar

В дополнение к ответу @DGDays:

для чисел:

arr = ['654','abc','456']
res = sum(int(elem) for elem in arr if elem.isdigit())
print(res)

для строк:

arr = ['654','abc','456']
res = ''.join(elem for elem in arr if elem.isdigit())
print(res)
→ Ссылка
Автор решения: Danis

проблема в том что isdigit это метод строки, а вы передаёте список числе. надо использовать функцию isinstance

if isinstance(number, int):

если надо чтобы программа работала с дробными числами то так:

if isinstance(number, (float, int)):
→ Ссылка