我是一名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()
显然不起作用,我怎样才能让它起作用?
答案 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了解更多信息)。