将列表中的所有元素加起来但不包括第一个偶数的函数

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错误?

Fre*_*abe 5

你可以使用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 == 1True,即它可以把你所有的数字上升到第连一个.而且sum,总结这些价值观.