Операции с элементами списка
Допустим, надо провести какие-нибудь математические операции, объединяющие все элементы списка в одно общее значение, и при этом отбросить некорректные значения.
Почему вот такой код работает некорректно (интересует именно момент проверки на число isdigit () )?:
def sum_array(array):
summ = 0
for number in array:
if number.isdigit ():
summ += number
return summ
Ответы (3 шт):
Не знаю что именно вы имели ввиду, но всё работает -_-
Единственная проблема - если вы хотите получить в сумме целое число, то надо делать примерно так:
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)
В дополнение к ответу @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)
проблема в том что isdigit это метод строки, а вы передаёте список числе. надо использовать функцию isinstance
if isinstance(number, int):
если надо чтобы программа работала с дробными числами то так:
if isinstance(number, (float, int)):
