2015-01-29 3 views
3

목록을 요약하려고하지만 첫 번째 짝수를 건너 뛰고 나머지 짝수를 포함하여 나머지 목록을 계속 추가하겠습니다. .요약 목록 : 첫 번째 짝수 건너 뛰기

list = [-3, -7, -1, 0, 1, 2, 3, 4, 5, 6, 7] 
def sum_num(num_list): 
    sum = 0 
    for i in num_list: 
     if i % 2 == 0: 
      continue 
     sum += i 
    return sum 
print sum_num(list) 

나는 모두 짝수 또는 모두를 합산하지 않습니다. 첫 번째 짝수를 건너 뛰도록하려면 어떻게해야합니까? 감사합니다.

+0

0으로 계산하려면 짝수로 계산 하시겠습니까? –

+0

@MalikBrahimi Zero는 짝수입니다. – mbomb007

+0

@AngieHernandez 내 대답이나 다른 문제가 해결 된 경우이를 수락 된 답변으로 표시하여 질문을 * 해결됨 *으로 표시 할 수 있습니다. 감사. – mbomb007

답변

4

if 문을 한 번만 변경하십시오. 그것도 처음 건너 뛰고 후

def sum_num(num_list): 
    total = 0 
    once = False 
    for i in num_list: 
     if i % 2 == 0 and not once: 
      once = True 
      continue 
     total += i 
    return total 

, 당신의 부울 once 연속 고르게 실패하기 if 조건을 일으키는 진정한 될 것입니다.

3

또한 예를 들어,이에 대한 itertools.takewhile을 이용할 수 있습니다 :이 num_list의 반복자를 생성하고 그 첫 번째 짝수 때까지 합을 계산하는 데 소비

from itertools import takewhile 

def sum_num(num_list): 
    it = iter(num_list) 
    before_first_even = takewhile(lambda L: L % 2 != 0, it) 
    return sum(before_first_even) + sum(it) 

data = [-3, -7, -1, 0, 1, 2, 3, 4, 5, 6, 7] 
result = sum_num(data) 
# 17 

... 다음 it는 남아있다 나머지 (첫 번째 짝수 제외), 그래서 우리는 그 합계를 추가하고 값을 반환 ... 이것은 우리가 짝수 값을 보았거나 아직 확인하지 않은 경우 주위에 변수를 유지하지 않습니다 ...

+0

이것은 허용 된 대답이어야합니다. 'takewhile '에 감사드립니다. –

관련 문제