2016-08-15 2 views
0

번호를 포함하여 숫자의 범위를 더한 함수를 만들려고했습니다.숫자를 포함하여 범위의 모든 숫자를 추가하십시오.

그래서 때 입력 5, 나는

왜이 기능이 작동하지 않습니다 (15)를 받아야한다?

def sum_nums(number): 
    start = 0 
    for index in range(0,len(number)): 
     start += index 
    return start 

print sum_nums(5) 
+0

'len (number)'를'number'로 바꾸어보세요. – Blorgbeard

+0

숫자 대신 '범위'를 사용하는 대신 'len'을 사용하고 계십니까? – TigerhawkT3

+1

또한이 코드는 오류 메시지를 표시해야합니다. 질문에 오류가 있으면 항상 포함 시키십시오. – Blorgbeard

답변

0

까지 이것은 한 라이너와 함께 할 수 있지만, 난 당신이 시도하고있는 형식의 솔루션으로 당신을 도울 것입니다 반복 할 때 달성 할 수 원하는 .

def sum_nums(number): 
    total = 0 
    for i in range(number + 1): 
     total += i 
    print total 

입력 5

출력 또한 15

, 당신의 오류 메시지에 따라 약간의 설명. 문자열에 len을 사용해야합니다. 정수에는 길이가 없습니다. 단순히 range 함수에 전달하면 1부터 해당 숫자까지의 모든 숫자 (시작 숫자를 지정하지 않은 경우)를 시도하지만 포함하지는 않습니다. 그래서 우리는 range(number + 1)에 대상 번호를 포함시켜야합니다.

희망이 도움이 :)

+1

그게 효과가! 고맙습니다 ! – BeeGee

+0

@BeeGee 문제 없습니다! – Harrison

+1

당신의 설명은 의미가 있습니다, 다시 한번 감사드립니다! – BeeGee

1

아래와 같이 'reduce'로 작성된 python을 사용하십시오. 또한 1에서 시작하여 6

reduce(lambda x, y: x+y, range(1, 6)) 
1

당신과 함께 한 라이너이 작업을 수행 할 수 있습니다

def sum_range_inclusive(number): 
    return sum(range(number + 1)) 

이 분해 : 누군가가 didn를하는 경우

# assume number is 5 for now 
number = 5  

# exclusive, doesn't include the number 
range(number) 
# returns [0, 1, 2, 3, 4] 

# inclusive, includes the number 
range(number + 1) 
# returns [0, 1, 2, 3, 4, 5] 

# sum of inclusive range 
sum([0, 1, 2, 3, 4, 5]) 
# returns 15 
+0

니스! 당신이 그런 범위를 '합계'할 수 있다는 것을 깨닫지 못했습니다! – elethan

+1

네, range는'list()'와'sum()'을 반환합니다. 목록, 튜플, 세트 등 숫자를 포함한 반복문을 합할 수 있습니다. – Soviut

+0

감사합니다. 'range'를 제외하고'list' afaik를 반환하지 않습니다; 적어도 파이썬 3에서는 그렇지 않다. 그래서 내 대답에'list' 호출을 추가했다. 전에는 필요하다고 생각했습니다. – elethan

2

이 질문에 어긋 것 sum(range(n))은 항상 n*(n-1)/2입니다. 값 n을 포함하여이 작업을 수행하려는 경우 식은 sum(range(n+1))n*(n+1)/2입니다.

관련 문제