0

我是一名 Python 初学者,我无法让一件事起作用。看,我们的老师告诉我们做一个函数来计算所有考试分数的平均分数,考试次数不定。它必须在 Python 2.7 中。

def main():
    print("This program computes the average of multiple exam scores.")

scoresno = input("Enter number of exam scores: ")
for scores in range(scoresno):
    scores = input("Enter exam score: ")

average = scores/(scoresno + 0.0)

print "Exam score average is:", (average)
main()

这显然不起作用,我怎样才能让它起作用?

4

3 回答 3

1

您可以在循环时直接对分数求和:

total = 0.0
for i in range(scoresno):
    total += input("Enter exam score: ")

average = total/scoresno

另一种方法是使用一个列表并将每个新值附加到它,然后求和:

scores = []
for i in range(scoresno):
    score = input("Enter exam score: ")
    scores.append(score)

total = sum(scores)
average = total/float(scoresno)
于 2013-10-14T17:42:11.880 回答
1

在您的第一个循环中,您将在每次迭代for中覆盖变量。scores相反,您应该创建一个变量来跟踪循环之前的组合分数,然后在每次迭代中添加当前分数。例如:

total = 0.0
for scores in range(scoresno):
     score = input("Enter exam score: ")
     total += score
于 2013-10-14T17:42:04.597 回答
0

首先,小心你的缩进!Python 对代码缩进有严格的规定。

第二,为什么要逐步平均?更好的做法是一次获取所有输入,然后除以输入量。

这是您更正的代码:

def main():
    print("This program computes the average of multiple exam scores.")
    scoresno = input("Enter number of exam scores: ")
    scoreslist = list() #Create a list of scores to be stored for evaluation
    for scores in range(scoresno):
        scoreslist.append(input("Enter exam score: ")) #Get the score and immediately store on the list
    average = float(sum(scoreslist)) / len(scoreslist)
    print "Exam score average is:", (average)

if __name__=='__main__': #Run this code only if this script is the main one
    main()

sum(iterable)对数字数组的所有元素求和并返回结果。想知道为什么演员表float?如果我们不强制转换,我们可能会对整数进行除法,从而产生整数结果(我猜你想要类似 的结果7.25),所以如果其中一个数字应该是浮点数(有关更多信息,请参见此处)。

于 2013-10-14T17:48:03.987 回答