2016-08-15 61 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

嘗試用'number'替換'len(number)'。 – Blorgbeard

+0

你爲什麼要把數字的「len」而不是將它用於'range'? – TigerhawkT3

+1

另外:這段代碼應該給你一個錯誤信息。請始終包含您在問題中遇到的任何錯誤。 – Blorgbeard

回答

0

這可能與1個襯墊做,但我會幫你出的格式的解決方案,你試圖。

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

使用像下面那樣構建'python'的python。此外,你想要什麼就可以實現,當你從1開始,遍歷至6

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

你可以做到這一點的一個班輪:

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

要打破下來:

# 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

是的,範圍返回一個'list()'和'sum()'可以對包含列表,元組,集合等的任何可迭代數進行求和。 – Soviut

+0

很有意思,謝謝!除了'range'不會返回一個'list' afaik;至少不是在Python 3中。這就是爲什麼我在我的答案中添加了'list'調用(我刪除了它,因爲你的更好);我以前認爲這是必要的。 – elethan

2

如果有人沒這個問題將是有毛病不要提及sum(range(n))始終是n*(n-1)/2。如果您希望這樣做,包括值n,表達式是sum(range(n+1))n*(n+1)/2

相關問題