关于python:如何找到输入的数字的平均值,0打破循环?

How to find the average of numbers being input, with 0 breaking the loop?

我只需要弄清楚如何使用0作为循环的退出来找到用户的所有这些输入数字的平均值。

我需要弄清楚如何消除使用0作为平均值的一部分。 例如:5,0,5,5 ...通过消除0,平均值为5。

1
2
3
4
5
6
7
8
9
10
11
nA = 1
nSum = 0
print ('enter numbers to find the average')
print ('enter 0 to quit.')
while nA !=0:
    nA = input ('gemmi a number:')
    nSum+=nA
   dAvg = nSum

print 'the total amount of numbers is' , nSum ,
print 'your average is' , dAvg ,

我该怎么做呢?


在我看来,你需要保留一个计数器,告诉你用户输入了多少个数字,这样你就可以除以它来得到平均值(注意不要计算最终的0)。顺便说一句,用户永远不能放入5,0,5,5,因为在第一个0,循环将中断而另外2个5将没有机会输入。


目前还不清楚你想做什么:你想用0作为退出循环的条件,还是只想跳过所有的零?

对于第一种情况(我从你的问题的标题中理解),可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
total = 0
nums = 0
readnum = None
print("Enter numbers to find the average. Input 0 to exit.")

while readnum != 0:
    readnum = int(raw_input('>'))
    total = total + readnum
    if readnum != 0:
      nums = nums + 1

print 'total amount of numbers is %d' % (nums)
print 'avg is %f' % (float(total)/nums)

需要除法上的float,否则仅使用整数部分进行除法(例如,1,3和4的平均值将给出2,而不是2.66667)。

它应该足够简单以适应第二种情况。


做平均值的方法是跟踪所有数字和"#项目"的"总和",并在完成后将两者分开。

所以像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
nCount = 0
nSum = 0
nA = 1
print ('enter numbers to find the average')
print ('enter 0 to quit.')
while nA != 0:
    nA = input ('gemmi a number:')
    if nA != 0:
      nCount = nCount + 1
      nSum = nSum + nA

dAvg = nSum / nCount
print 'the total amount of numbers is' , nCount
print 'your average is' , dAvg