如何获得一系列输入的平均值?

时间:2016-09-29 01:07:42

标签: python

我必须创建一个程序,显示变量列表的算术平均值。应该有50个等级。

我几乎被困住了。现在我只有:

for c in range (0,50):
    grade = ("What is the grade?")

另外,我如何打印低于50的成绩计数?

感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

如果您不介意使用numpy,这非常简单:

import numpy as np
print np.mean(grades)

或者如果您不想导入任何内容,

print float(sum(grades))/len(grades)

要获得低于50的成绩,假设您将所有成绩列在一个列表中,您可以这样做:

grades2 = [x for x in grades if x < 50]
print len(grades2)

答案 1 :(得分:1)

假设您有一个包含所有成绩的列表。

avg = sum(gradeList)/len(gradeList)

这实际上比numpy.mean()更快。

要查找小于50的成绩数,可以将其置于带有条件语句的循环中。

numPoorGrades = 0
for g in grades:
    if g < 50:
        numPoorGrades += 1    

你也可以使用列表理解来更紧凑地写这个。

numPoorGrades = len([g for g in grades if g < 50])

答案 2 :(得分:0)

首先,假设grades是包含成绩的列表,您可能希望迭代grades列表,而不是迭代range(0,50)

其次,在每次迭代中,您都可以使用变量来计算到目前为止看到的等级数,以及另一个到目前为止所有等级的变量。这样的事情:

num_grades = 0
sum_grades = 0
for grade in grades:
  num_grades += 1 # this is the same as writing num_grades = num_grades + 1
  sum_grades += sum # same as writing sum_grades = sum_grades + sum

现在您需要做的就是将sum_grades除以num_grades以获得结果。

average = float(sum_grade)s / max(num_grades,1)

我使用max函数返回num_grades和1之间的最大数字 - 如果成绩列表为空,num_grades将为0,并且0除以未定义。 我用float得到了一小部分。

要计算低于50的成绩数,您可以添加另一个变量num_failed并将其初始化为0,就像num_counts一样,如果检查成绩是否低于50,则添加一个变量{}如果是将num_failed增加1。

答案 3 :(得分:0)

尝试以下方法。函数isNumber尝试将输入(作为字符串读取)转换为float,我相信它也会转换为整数范围,并且是Python 3中的浮点类型,即I&lt; m;我正在使用的版本。 try...except块与其他编程语言中的try...catch语句类似。

#Checks whether the value is a valid number:
def isNumber( value ):
    try:
        float( value )
        return True
    except:
        return False

#Variables initialization:
numberOfGradesBelow50 = 0
sumOfAllGrades = 0

#Input:
for c in range( 0, 5 ):
    currentGradeAsString = input( "What is the grade? " )
    while not isNumber( currentGradeAsString ):
        currentGradeAsString = input( "Invalid value. What is the grade? " )
    currentGradeAsFloat = float( currentGradeAsString )
    sumOfAllGrades += currentGradeAsFloat
    if currentGradeAsFloat < 50.0:
        numberOfGradesBelow50 += 1

#Displays results:
print( "The average is " + str( sumOfAllGrades / 5 ) + "." )
print( "You entered " + str( numberOfGradesBelow50 ) + " grades below 50." )