簡體   English   中英

一個簡單的python項目,總和和平均值

[英]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

謝謝你的時間:)

一種可能的解決方案是創建一個保存所有值的列表。 然后應用sumaverage

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM