2017-09-21 20 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 +之后+ = –