Python 计算平均未知输入量

Python 计算平均未知输入量,python,python-3.x,sum,average,Python,Python 3.x,Sum,Average,我正在使用Python3学习编程的入门课程。我得做一项作业。任务如下: 用Python编写一个程序,从Linux shell的标准输入中读取数字,并显示这些数字的平均值,小数点后有一位数字。提示:使用带有两个参数的round函数 老实说,我不知道如何计算未知量输入的总和。我能找到的所有东西都是为了你知道要输入多少个数字 到目前为止,我有: import sys def main(): print ("To stop entering numbers and calculate aver

我正在使用Python3学习编程的入门课程。我得做一项作业。任务如下:

用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%的初学者,我从来没有做过任何编码之前,这门课程应该是为像我这样的人,但我不相信他们了

您在代码中的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循环之外完成。

这是正确的方法

平均值是3吗?循环对每行进行编号,因此如果键入1并输入下一行是1,则输入2,下一行是2。所有这些字符都被计算在内,因此将是4个字符。正如你们所看到的,我有九个字符,但不知怎的,当划分时,它意识到只有三个输入字符,所以它将九个(总计)除以三个(输入)。不幸的是,我不知道为什么。也许如果你复制代码,自己尝试一下,我的意思会更清楚一些。我还不知道所有的术语,所以我可能解释得不太清楚。我不打算回答,但我会给你一些指导。首先,创建一个列表,列出从输入中获得的所有值(作为整数)。当你成功地做到这一点时,你只需要将数字列表相加并除以列表中的数字数量。问题是,当我不知道将输入多少值时,我不知道如何创建一个列表(如果这不是动词,请告诉我)。我在谷歌上搜索了一下,但没有用,因为我想我不知道用什么术语来找到我需要的答案。。。我创建这个循环是因为我认为它会给我大量的输入(因为它会对所有内容进行编号),但这也不起作用,因为我显然误解了它的工作原理。我知道我被认为是毫无头绪的,但这是第一个作业,我不知道从哪里获得我需要的信息。把数字放在一个容器中,然后使用内置函数,很抱歉,但我仍然没有得到正确的结果。如果我使用你的建议,输入3 5 7 9的平均值会变成3.2,而不是24.24是总和,6是平均值。我得到6作为我的答案。是的,对不起,我现在知道我已经在sum+之后离开了I+=谢谢!我将查找您的更改,以确保我理解您所做的操作。您在代码中的for循环之外进行了平均和求和。我只是把它们移到for循环中。对于每次迭代,总和和平均值都会改变,因此它们必须在For循环中。打印总和时,可以在for循环之外执行平均值。