编写一个函数,计算正整数和偶数整数列表中所有值的总和
Write a function that calculates the sum of all values in a list of integers that are both positive and even
该函数应接受单个列表作为参数。该函数应 return 一个整数值作为计算结果。如果列表中没有正整数和偶整数值,您的函数应该 return 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
我不知道应该把 'return 0' 放在哪里。
谢谢TA!
在迭代列表时从列表中删除是一个 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,这涵盖了没有正偶数的情况。
该函数应接受单个列表作为参数。该函数应 return 一个整数值作为计算结果。如果列表中没有正整数和偶整数值,您的函数应该 return 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
我不知道应该把 'return 0' 放在哪里。 谢谢TA!
在迭代列表时从列表中删除是一个 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,这涵盖了没有正偶数的情况。