2015-11-02 5 views
-2

Мое funtion должно взять список целых чисел и вернуть сумму отрицательных целых чисел в списке. Как я могу исправить это, чтобы объекты списка рассматривались как целые числа?Функция Python, которая возвращает сумму отрицательных чисел в списке

def sumNegativeInts(listInt): 
    sumNegative=0 
    for x in listInt.split(','): 
     if int(x) < 0: 
      sumNegative+=listInt(x) 
    return sumNegative 
+2

Там находятся несколько потенциально неправильных вещей неправильно с вашим кодом, но мы не можем точно знать из контекста. Пожалуйста, предоставьте краткую ** ** полную ** программу, которая демонстрирует проблему, с которой вы сталкиваетесь. –

ответ

2

Если ваш «список» не является строкой, ваш номер сохраняется последовательно.

def sumNegativeInts(listInt): 
    sum_result = 0 
    for x in listInt: 
     if x < 0: 
      sum_result += x 
    return(int(sum_result)) 

Обратите внимание, что если ваш номер целиком, вам не нужно прикладывать сумму при возврате.

+2

Обратите внимание, что с помощью имени 'sum' вы затеняете встроенную функцию, которая была бы действительно полезна в этой ситуации ... – jonrsharpe

+0

@jonrsharpe вы правы. Отредактировано с другим именем – fattidare

5

Вам не нужно указывать split.

def sumNegativeInts(listInt): 
    m = 0 
    for x in listInt: 
     if x < 0: 
      m+=x 
    return(int(m)) 

a = [1, 3, 4, 5, -2, -3, 4, -1] 
print sumNegativeInts(a) 

Выход (-2 + -3 + -1):

-6 

Лучший способ с использованием генератора выражения:

print sum(x for x in a if x<0) 
+1

FYI, ваш «лучший способ» - это [выражение генератора] (https://docs.python.org/2/reference/expressions.html#generator-expressions), а не понимание списка. –

Смежные вопросы