我必须从键盘创建单独的乐谱并将它们存储在列表中。然后调用三个函数中的每一个,通过列表,计算平均,最高和最低分数。 ## note创建3个函数(ave,high,low),并将列表传递给每个
我做错了什么?
对于所有额外的东西,我现在很乱了!
def getScores():
"""This function asks the user for list of scores
"""
validNums=("0123456789")
lstScores=[ ]
strNum="0"
while len(strNum) > 0:
strNum=raw_input("Enter a number or press ENTER when done: ")
if len(strNum) > 0:
for digit in strNum:
if digit in validNums:
lstScores.append(int(strNum))
else:
print "invalid data entered!"
return lstScores
def DataSort(sortedScores=[ ]):
sortedScores.sort()
return sortedScores
def Average(avgScores=[]):
sum(lstScores) / len(lstScores)
for avg in avgScores:
print avgScores
return avgScores
##def DataPrint(scoresToPrint=[ ]):
## for score in scoresToPrint:
## print score ####list sort
###MAINLINE
lstScores=getScores()
##sortedScores=DataSort(sortedScores=lstScores)
avgScores=Average()
##DataPrint(scoresToPrint=sortedScores)
print
print lstScores
print
print avgScores
##print sortedScores
##for num in lstScores:
## print num
##for avg in avgScores:
##print avg
答案 0 :(得分:0)
目前尚不清楚为什么在函数avgScores
中传递Average
的默认值,但这可用于查找平均值:
def Average(lstScores):
return float(sum(lstScores)) / len(lstScores) if lstScores else 0.0
这样称呼:
Average(lstScores)
此外,我假设分数在0-9范围内,如果分数大于9,getScores()
中的验证逻辑将失败。
答案 1 :(得分:0)
你有几个问题。
lstScores
传递给函数Average()
。我已经为你修复了代码,但是现在如果写一个非整数,它会抛出ValueError
。我留给你找出异常处理。您的Average()
函数实际上并未计算平均值...
def getScores():
"""This function asks the user for list of scores
"""
validNums=("0123456789")
lstScores=[ ]
strNum="0"
while len(strNum) > 0:
strNum=raw_input("Enter a number or press ENTER when done: ")
if len(strNum) > 0:
lstScores.append(int(strNum))
return lstScores
def DataSort(sortedScores=[ ]):
sortedScores.sort()
return sortedScores
def Average(avgScores=[]):
avg = sum(lstScores) / float(len(lstScores))
return avg
lstScores=getScores()
avgScores=Average(lstScores)
print lstScores
print "Average of scores: " + str(avgScores)