【问题标题】:Calculate average unknown amount of input计算平均未知输入量
【发布时间】:2017-09-21 18:15:11
【问题描述】:

我正在使用 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()

但我觉得我完全走错了路。现在发生的事情是循环中的所有字符都被计入总和,所以你得到 ​​p>

4

1  4

6

2  6

2 

3  2

sum 9

average 3

(9/3)

但我当然需要(4+6+2)/3

我是 100% 的初学者,我以前从未做过任何编码,本课程应该是为像我这样的人准备的,但我不再相信他们了。

【问题讨论】:

  • 平均值是 3 怎么算?
  • 循环对每一行进行编号,因此如果您输入 1 并输入下一行是 1 1,然后输入 2,下一行是 2 2。所有这些字符都被计算在内,因此将是 4 个字符。如您所见,我在那里有九个字符,但不知何故,在划分它时确实意识到只有三个输入字符,所以它将九(总)除以三(输入)。我不知道为什么,不幸的是。也许如果您复制代码并自己尝试一下,我的意思会更清楚一些。我不知道所有的术语(还),所以我可能解释得不是很清楚。
  • 我不打算回答,但我会给你一些指导。首先,创建一个从输入中获得的所有值的列表作为整数。成功完成此操作后,您只需将该数字列表相加并除以列表中的数字数量。
  • 问题是当我不知道要输入多少个值时,我不知道如何创建一个列表(如果那不是动词,请告诉我)。我用谷歌搜索无济于事,因为我认为我不知道使用正确的术语来找到我需要的答案......我创建了那个循环,因为我认为这会给我大量的输入(因为它对所有内容都进行了编号) ),但这也不起作用,因为我显然误解了它的工作原理。我知道我一无所知,但这是第一个任务,我不知道从哪里获得我需要的信息。
  • 将数字放入容器中,使用内置函数sum()

标签: python python-3.x sum average


【解决方案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循环之外完成。
这是正确的方法

【讨论】:

  • 很抱歉,我仍然没有得到正确的结果。如果我使用您的建议,输入 3 5 7 9 的平均值会以某种方式变为 3.2 而不是 24。
  • 24 是总和,6 是平均值。我的答案是 6。
  • 是的,抱歉,我现在看到我在 sum += 之后离开了 i +
  • 谢谢!我会查看您的更改,以确保我理解您所做的。
  • 您在代码中的 for 循环之外进行平均和求和。我只是将它们移到 for 循环中。对于每次迭代,总和和平均值都会改变,因此它们必须在 for 循环中。打印总和,平均值可以在for循环之外完成。
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多