Python 通过列表传递的数学函数
我必须从键盘上创建个人分数并将其存储在列表中。然后调用三个函数中的每一个,通过列表,计算平均分、最高分和最低分##注意:创建3个函数(ave、high、low),并将列表传递给每个函数 我做错了什么 我现在搞得一团糟,为所有额外的东西抱歉Python 通过列表传递的数学函数,python,Python,我必须从键盘上创建个人分数并将其存储在列表中。然后调用三个函数中的每一个,通过列表,计算平均分、最高分和最低分##注意:创建3个函数(ave、high、low),并将列表传递给每个函数 我做错了什么 我现在搞得一团糟,为所有额外的东西抱歉 def getScores(): """This function asks the user for list of scores """ validNums=("0123456789") lstScores=[ ]
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
不清楚为什么要在函数
Average
中传递avgScores
的默认值,但这将用于查找平均值:
def Average(lstScores):
return float(sum(lstScores)) / len(lstScores) if lstScores else 0.0
可以这样称呼:
Average(lstScores)
另外,我假设分数在0-9之间,如果分数大于9,
getScores()
中的验证逻辑将失败。您有几个问题
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)
你怎么了?没有得到正确的输出?没有任何输出?等等……所以我可以把列表通读一遍,但当我试图得到平均值时,它说没有。或者只是给我[]它没有给我任何平均值的输出什么是
lstScores
?它不会传递到平均值。这是一个全球性的问题吗?另外,正如其他人在删除的答案中所提到的,您使用lstScores
做了很多事情,但是您不会将结果存储在任何地方。一般来说,您的平均值函数很奇怪。最后,这是家庭作业吗?如果是这样,就把它标记为家庭作业。与如何以及何时将参数传递给函数无关,getScores()的逻辑对我来说很重要。它当前将为每个数字添加一个输入的数字(如123
),我认为这不是它的本意。@DSM谢谢,假设每个人都使用Python 3:)是不安全的,尤其是不使用打印语句。:^)