求和正偶数

-2 投票
4 回答
3770 浏览
提问于 2025-04-18 15:29

写一个函数,计算一个整数列表中所有正偶数的总和。这个函数叫做 sum_positive_even,应该接受一个列表作为参数。你的函数要返回一个整数值。如果列表中没有正偶数,函数就应该返回 0。
例如:

test_list = [1, 2, 3, 4]
print(sum_positive_even(test_list)) 结果是 6

这是我的代码:

test_list = []
sum = 0
for i in test_list:
    if i%2==0 and i>0:
        return sum+=i
    else:
        return 0

我这样做是不是完全错了?它一直显示错误。

4 个回答

-1

要返回一个值,你需要定义一个方法。

   test_list = [-1, 2, 3, 4]
    sum = 0
    for i in test_list:
        if i%2==0 and i>0:
            sum+=i
    print sum

其实如果你在写方法的话……

 def sum_positive_even(test_list):
      sum = 0
      for i in test_list:
         if i%2==0 and i>=0:
             sum+=i
      return sum 
 sum_positive_even([-1, 2, 3, 4])

#output 6

#sum_positive_even([-1, -2, 3, 5])
#output 0

解释:

  1. 要返回一个值,必须先定义一个方法。
  2. 根据题目的要求,比如说如果第一个元素是-1,那么逻辑就直接返回0,而不需要去查看列表中的其他元素。
  3. 所以,如果条件对所有元素都不成立,我们把和(sum)设为0,那么和就会保持为0。
1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某个功能不能正常工作,这时候就需要去查找原因。

通常情况下,大家会去网上搜索解决方案,比如在StackOverflow上提问或者查看别人的问题和答案。这个过程就像是向朋友请教,看看他们有没有遇到过类似的情况,或者有没有好的解决办法。

在提问时,记得描述清楚你遇到的问题,包括你使用的工具、代码示例,以及你尝试过的解决方法。这样其他人才能更好地理解你的问题,并给出有效的建议。

总之,遇到问题不要慌,先冷静下来,仔细检查代码,然后再去寻求帮助。这样才能更快地找到解决方案,提升自己的编程能力。

# Note:  sum is a built in function

test_list = [1, 2, 3, 4, -2, -8, 8]

def sum_positive_even(lst):
    "Filter using a generator expression and return sum."
    fgen = (n for n in lst if n % 2 == 0 and n > 0)
    return sum(fgen, 0)

if sum_positive_even(test_list) == 14:
    print("OK!")

if sum_positive_even([]) == 0:
    print("Empty list OK!")
1

下面的代码有两个版本:一个是比较有经验的程序员可能会用的方法,另一个则是比较简单直接的做法,也就是对你尝试的修正。

def sum_positive_even(lst):
    return sum(filter(lambda x: x > 0 and x%2 == 0, lst))

def sum_positive_even_v2(lst):
    sum = 0
    for i in lst:
        if i%2==0 and i>0:
            # remember that item by summing it up (don't return it yet)
            sum+=i
        # else: do nothing and check the next item
    # all the list has been checked
    return sum

test_list = [-2, -1, 0, 1, 2, 3, 4]

print(sum_positive_even(test_list))
print(sum_positive_even_v2(test_list))

关于第一个版本中使用的函数的文档:
Python 内置的 sum 函数
Python 内置的 filter 函数

1
>>> l = [1, -3, 4, 2, 0, -5]

>>> filter(lambda x: x > 0 and x%2 == 0, l)
[4, 2]

>>> sum(filter(lambda x: x > 0 and x%2 == 0, l))
6

然后把它定义成一个函数

def addEvenAndPositive(myList):
    return sum(filter(lambda x: x > 0 and x%2 == 0, myList))

>>> addEvenAndPositive([1, -3, 4, 2, 0, -5])
6

撰写回答