Hap*_*s31 2 python if-statement list elements addition
我正在尝试编写一个python函数,它将列出列表中的所有元素,但不包括第一个偶数.该函数需要通过以下测试:
from test import testEqual
testEqual(sum_of_initial_odds([1,3,1,4,3,8]), 5)
testEqual(sum_of_initial_odds([6,1,3,5,7]), 0)
testEqual(sum_of_initial_odds([1, -7, 10, 23]), -6)
testEqual(sum_of_initial_odds(range(1,555,2)), 76729)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
import random
lst = []
def sum_of_initial_odds(nums):
sum = 0
#test if element is odd number - if it's odd, add it to the previous integer
for i in lst:
if i % 2 != 0:
sum = sum + i
return sum
#test if element is even number - if it's even, don't include it and break code
else:
if i % 2 == 0:
break:
Run Code Online (Sandbox Code Playgroud)
我目前正在收到一个解析错误:
ParseError: bad input on line 11
Run Code Online (Sandbox Code Playgroud)
这是一行:
else:
Run Code Online (Sandbox Code Playgroud)
我怎样才能编写这段代码,以便在列表中添加元素,但不包含第一个偶数,而不会出现Parse错误?
你可以使用itertools.takewhile以下方法轻松完成:
>>> import itertools
>>> sum(itertools.takewhile(lambda x: x % 2 == 1, [1,3,1,4,3,8]))
5
Run Code Online (Sandbox Code Playgroud)
takewhile将产生从给定的序列中的元素,而谓语x % 2 == 1是True,即它可以把你所有的数字上升到第连一个.而且sum,总结这些价值观.