编写一个函数,计算正数和偶数整数列表中所有值的总和

时间:2017-08-02 02:52:02

标签: if-statement sum python-3.6

该函数应接受单个列表作为参数。该函数应返回一个整数值作为计算结果。如果列表中没有正整数值,则函数应返回0.

我目前的代码:

def main():
    print (sum_positive_even([1,2,3,4,5]))
    print (sum_positive_even([-1,-2,-3,-4,-5]))
    print (sum_positive_even([1,3,5,7,9]))

def sum_positive_even(list):
    for num in list:
        if num < 0:
            list.remove(num)
    for num in list:
        if num % 2 == 1:
            list.remove(num)
    result = sum(list)
    return result

main()

输出应该是:

6
0
0

我很困惑我应该把&#39;返回0&#39;。 谢谢TA!

1 个答案:

答案 0 :(得分:1)

在迭代时从列表中删除是Bad Idea - 通过这种方式很容易获得难以追踪的错误。更好的是建立一个你想要保留的项目的新列表。你不需要返回0的特殊情况;一般的方法应该能够解决这个问题。

此外,最好不要在Python中使用list作为变量名,因为这是内置的名称。

对您的方法进行修改:

def sum_positive_even(lst):
    to_keep = []
    for num in lst:
        if num > 0 and num % 2 == 0:
            to_keep.append(num)
    return sum(to_keep)

由于空列表的总和为0,这涵盖了没有正数偶数的情况。