总和均数

时间:2014-07-31 12:25:40

标签: python

  

编写一个函数,将正数偶数加到列表中   整数值。该函数应该被称为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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 built-in sum
Python built-in filter

答案 2 :(得分:1)

# 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!")

答案 3 :(得分:-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

Explantion:

  1. 返回一个必须定义的方法
  2. 根据问题陈述,假设第一个元素是-1,逻辑直接返回0而不读取列表中的其他元素
  3. 所以,如果条件对所有元素都失败,我们将sum指定为0,则sum仍为0。