我必须创建一个程序,显示变量列表的算术平均值。应该有50个等级。
我几乎被困住了。现在我只有:
for c in range (0,50):
grade = ("What is the grade?")
另外,我如何打印低于50的成绩计数?
感谢任何帮助。
答案 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." )