计算平均未知输入量

时间:2017-09-21 18:15:11

标签: python python-3.x sum average

我正在使用Python 3进行编程的终极初学者课程。我必须完成一项任务。作业如下:

  

在Python中编写一个程序,从Linux shell的标准输入读取数字,并显示这些数字的平均值,小数点后面有一位数字。提示:使用带有两个参数的round函数。

老实说,我不知道如何计算未知输入量的总和。如果您知道将输入多少数字,我能找到的一切都是为了。

到目前为止,我有这个:

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%是初学者,我之前从未做过任何编码,这个课程应该适合像我这样的人,但我不再相信他们了。

1 个答案:

答案 0 :(得分: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循环之外完成 这是正确的方法