[英]A simple python project with sum and average
我使用python 3,我必須創建一個程序,創建5到100的所有倍數,然后打印它們以及它們的平均值。我試過這個但是......
for i in range(0, 101):
if i % 5 == 0:
x = 0
x += 1
y = sum(i)
z = y/x
print(i)
print(z)
當我嘗試這個時,我得到:
Traceback (most recent call last):
File "C:/Users/Chriskaf/Desktop/(3)count.py", line 5, in <module>
y = sum(i)
TypeError: 'int' object is not iterable
謝謝你的時間:)
一種可能的解決方案是創建一個保存所有值的列表。 然后應用sum
和average
:
total = []
for i in range(0, 101):
if i % 5 == 0:
total.append(i)
total_sum = sum(total)
total_average = sum(total)/len(total)
嘗試這個:
counter = 0
sum_numbers = 0
for number in range(1,101):
if number % 5 ==0:
counter += 1
sum_numbers += number
avg = sum_numbers / float(counter)
print (number, avg)
輸出:
(5, 5.0)
(10, 7.5)
(15, 10.0)
(20, 12.5)
(25, 15.0)
(30, 17.5)
(35, 20.0)
(40, 22.5)
(45, 25.0)
(50, 27.5)
(55, 30.0)
(60, 32.5)
(65, 35.0)
(70, 37.5)
(75, 40.0)
(80, 42.5)
(85, 45.0)
(90, 47.5)
(95, 50.0)
(100, 52.5)
您的代碼有幾個問題。
x
計數器在每次迭代時都被重置(它總是設置為0,之后設置為1) sum
(這里是錯誤代碼) - 你不能sum
一個數字(這就是i
的意思) - 和函數描述是: sum(sequence [,start]) - > value返回一個數字序列的總和(NOT字符串)加上參數'start'的值(默認為0)。 當序列為空時,返回start。 y
除以一個int
(會導致最接近的圓int,我相信你想浮動結果) 希望有所幫助!
更妙的是,使用的范圍 “台階”參數,達到您想要的號碼。 另外,不要重新計算總和。
total = [i for i in range(5, 101, 5)]
total_sum = sum(total)
total average = total_sum / len(total)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.