数学函数通过列表传递

时间:2012-03-21 00:32:59

标签: python

我必须从键盘创建单独的乐谱并将它们存储在列表中。然后调用三个函数中的每一个,通过列表,计算平均,最高和最低分数。 ## 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

2 个答案:

答案 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)

你有几个问题。

  1. 您要在列表中多次添加数字。
  2. 您正在计算空列表的平均值!您需要将lstScores传递给函数Average()。我已经为你修复了代码,但是现在如果写一个非整数,它会抛出ValueError。我留给你找出异常处理。
  3. 您的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)
    
相关问题