2014-12-07 5 views
-3

이 두 코드의 차이점은 무엇입니까? 첫 번째는 작동하지만 두 번째는 작동하지 않습니다 ...두 코드 간의 차이점은 무엇입니까?

total=sum(prices[k]*stock[k] for k in prices) 

for k in prices: 
     total=sum(prices[k]*stock[k]) 
+0

어디에서'열쇠'를 얻고 있습니까? –

답변

5

두 번째 예제는 루프의 각 반복에서 총계를 재생성합니다. 이 처음 total 제로에 설정하고, 양 prices[k]*stock[k]에 의해 각 반복의 총을 증가합니다

total = 0 
for k in prices: 
    total+=prices[k]*stock[k] 

대신이 같은 것을 사용해야합니다.

+0

죄송합니다. 어제 파이썬을 배우기 시작했습니다. 실제로 저는 운동에서 0으로 설정했는데, 합계 대신에 +를 넣어야하는 이유는 무엇입니까? –

+0

@RubemCarvalho : 두 번째 예에서'sum'은 유용한 목적으로 사용되지 않습니다. 예를 들어, 반복'k = 5'를했다면, 코드는'prices [5] * stock [[5]'의 값을 계산할 것입니다. 값이 '100'이라고 가정 해 봅시다. 그런 다음 코드는 당신이 통과 한이 인수들의'sum'을 취합니다.이 경우'sum (100)'처럼 보일 것입니다. 물론 100의 합은 100입니다.이 값은 이전 반복의 총계를 대체하는'total'에 할당됩니다. 합계를 대체하는 대신'+ ='를 사용하여 기존 합계에 추가합니다. – grovesNL

+0

아, 알겠습니다. 처음 엔 그 일을 할 것이라고 생각했습니다. 고마워요! –

관련 문제