汇总Python中的所有范围变量?

时间:2013-10-14 17:38:31

标签: python range

我是一名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()

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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)

答案 2 :(得分: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这样的结果),所以如果其中一个数字应该是一个浮点数(参见here了解更多信息)。