Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过列表传递的数学函数_Python - Fatal编程技术网

Python 通过列表传递的数学函数

Python 通过列表传递的数学函数,python,Python,我必须从键盘上创建个人分数并将其存储在列表中。然后调用三个函数中的每一个,通过列表,计算平均分、最高分和最低分##注意:创建3个函数(ave、high、low),并将列表传递给每个函数 我做错了什么 我现在搞得一团糟,为所有额外的东西抱歉 def getScores(): """This function asks the user for list of scores """ validNums=("0123456789") lstScores=[ ]

我必须从键盘上创建个人分数并将其存储在列表中。然后调用三个函数中的每一个,通过列表,计算平均分、最高分和最低分##注意:创建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

不清楚为什么要在函数
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:)是不安全的,尤其是不使用打印语句。:^)