2016-07-08 104 views
0
k = 1 
M = input("Enter an integer: ") 
for M in range(k,M): 
    s = 1/float(M) 
    print sum(s) 

如何獲得s的總和?我不斷收到一條錯誤消息:如何在Python中獲得多個數字的總和

File "C:/Python27/summation.py", line 7, in <module> 
    print sum(s) 
TypeError: 'float' object is not iterable 
+0

*和*的是什麼?單個元素? – soon

+0

請提供您獲得的全部錯誤消息 – Nikem

回答

3

s不是一個列表它是一個浮點數。嘗試這個代替:

k = 1 
M = input("Enter an integer:") 
print sum(1/float(s) for s in range(k, M)) 
1

嘗試此:

s=[] 
k = 1 
M = input("Enter an integer: ") 
for M in range(k,M): 
    s.append(1/float(M)) 
print(s) 
print(sum(s)) 

輸出(M = 10):

[1.0, 0.5, 0.3333333333333333, 0.25, 0.2, 0.16666666666666666, 0.14285714285714285, 0.125, 0.1111111111111111] 
2.8289682539682537 
0

在該源代碼,值M覆蓋兩次。所以如果在for循環中改變M,你可以得到s的總和。 固定的花色在下面。

k = 1 
M = input("Enter an integer: ") 
S = [] 
for V in range(k,M): S.append(V) 
print sum(s) 

另外,如果你想獲得名單的總和,你必須做出一個值列表,並追加在列表中的值(V)。

0

您可以用下面的代碼試試:

result = 0 
k = 1 
M = int(input("Enter an integer: ")) 
for M in range(k, M): 
    result += (1/float(M)) 
print(result) 

它是如何工作的?它會要求輸入,並進行操作。循環的每個循環的結果將被添加到名爲result的變量中。

簡單,希望它適合你。

0

我想你需要計算1/1.0 + ... + 1/yourInput的總和。

您可以使用下面的方法。

def getSum(yourInput): 
    scoreLst = [1/float(e) for e in range(1, yourInput)] 
    return sum(scoreLst) 

e.g:getSum(10),你會得到輸出:2.828 ...