2017-09-21 57 views
0

我正在做一個編程的最終初學者課程,使用Python 3.我必須做一個任務。作業如下:計算平均未知輸入量

用Python編寫一個程序,它從Linux shell的標準輸入中讀取數字,並顯示這些數字的平均值,小數點後一位數。提示:使用具有兩個參數的循環函數。

我真的不知道如何計算未知量的輸入總和。我能找到的所有東西都是爲了知道輸入多少個數字。

到目前爲止,我有這樣的:

import sys 

def main(): 

    print ("To stop entering numbers and calculate average, press CTRL+D") 
    print ("Enter numbers:") 
    i = 0 
    for line in sys.stdin: 
     print (i, "\t", line.strip()) 
     i = i + 1 
    sum = i +int(line.strip()) 
    amount = i 
    average = sum/amount 
    print(sum) 
    print(amount) 
    print("The average of the numbers you entered is", round (average, 1),".") 

main() 

,但我覺得我完全是在錯誤的軌道上存在。現在會發生什麼是,在循環中的所有字符被計數的總和,所以你得到

4 

1 4 

6 

2 6 

2 

3 2 

sum 9 

average 3 

(9/3) 

但我需要的,當然,(4+6+2)/3

我是100%的初學者,我以前從未做過任何編碼,而且這個課程應該適合像我這樣的人,但我不相信他們。

+0

平均出來3是如何? –

+0

循環爲每一行編號,所以如果你輸入1並輸入下一行是1 1,那麼2輸入,下一行是2 2.所有這些字符都被計數,所以這將是4個字符。正如你所看到的那樣,我在那裏有九個字符,但是不知何故,在分割時它意識到只有三個輸入字符,所以它將九(總數)除以三(輸入)。不幸的是,我不知道爲什麼。也許如果你複製代碼並自己嘗試一下,那麼我的意思就會更清晰一些。我還不知道所有的術語,所以我可能不會很清楚地解釋。 –

+0

我不會回答它,但我會給你一些指導。首先,創建一個您從輸入中獲得的所有值的列表,作爲整數。當你成功完成這個任務時,你只需要總結這個數字列表併除以列表中的數字。 – acushner

回答

1

你在代碼中做了for循環之外的平均值和總和。我只是將它們移到for循環中。對於每次迭代,總和和平均值都會改變,所以它們必須在for循環中。

print ("To stop entering numbers and calculate average, press CTRL+D") 
print ("Enter numbers:") 
i = 0 
sum = 0 
average = 0.0 
for line in sys.stdin: 
    print (i, "\t", line.strip()) 
    i = i + 1 
    sum += int(line.strip()) 
    average = sum/i 
print("The average of the numbers you entered is", round (average, 1),".") 

打印總和,平均值可以在for循環外完成。
這是正確的方法

+0

對不起,但我我仍然沒有得到正確的結果。如果我使用你的建議,輸入3 5 7 9的平均值變成3.2而不是24. –

+0

24是總和,6是平均值。我得到6作爲我的答案。 –

+0

是的,對不起,我現在看到我已經離開了i +之後+ = –