编写一个函数,将正数偶数加到列表中 整数值。该函数应该被称为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
我做错了吗?它一直显示错误
答案 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: