Python 编写计算测验成绩和的程序-列表

Python 编写计算测验成绩和的程序-列表,python,Python,我正在解决这个问题: 问题:最后的测验分数是通过将所有分数相加来计算的,最低的两个除外。编写一个程序,利用列表打印最终分数 尝试:我想我的一切都是正确的,只是我不确定在“main”函数下应该写什么代码。这是我的密码: def main(): scores = readFloats(values) removeMinimum(scores) removeMinimum(scores) total = sum(scores) print("The final

我正在解决这个问题:

问题:最后的测验分数是通过将所有分数相加来计算的,最低的两个除外。编写一个程序,利用列表打印最终分数

尝试:我想我的一切都是正确的,只是我不确定在“main”函数下应该写什么代码。这是我的密码:

def main():
    scores = readFloats(values)
    removeMinimum(scores)
    removeMinimum(scores)
    total = sum(scores)
    print("The final score is", total)


def readFloats(values):
    values = []
    userInput = input("Please enter a value or Q to quit: ")
    while userInput != "Q":
        n = float(userInput)
        values.append(n)
        userInput = input("Please enter a value or Q to quit: ")

    return values

def removeMinimum(values):
    smallest = values[0]
    for i in range(len(values)):
        if values[i] < smallest:
            smallest = values[i]

    values.remove(smallest)

main()
def main():
分数=读取浮动(值)
移除最小值(分数)
移除最小值(分数)
总数=总和(分数)
打印(“最终分数为”,总计)
def readFloats(值):
值=[]
userInput=input(“请输入一个值或Q以退出:”)
当用户输入时!=“Q”:
n=浮动(用户输入)
值。追加(n)
userInput=input(“请输入一个值或Q以退出:”)
返回值
def清除最小值(值):
最小值=值[0]
对于范围内的i(len(值)):
如果值[i]<最小值:
最小值=值[i]
值。删除(最小值)
main()

当我试着运行这个程序时,它说“value”这个名字没有在“main”函数中定义。我不知道怎样才能得到正确的参考。应提示用户输入值,如果输入值为8、4、7、8.5、9.5、7、5、10,则输出值应为50。有人能告诉我我的错误在哪里吗?

在Python中,您可以通过在变量中放入一些东西来实例化它:您还没有这样做。您正在将一个名为“values”的东西传递给readFloats方法,但没有在其中放入任何内容,因此该变量不存在,Python无法找到它。在将内容传递给readFloats之前,主要将其放入“值”中。告诉Python这是一个浮点数组

您的错误是由于您在第一次调用函数
readFloats(values)
时使用了名称
values
,但没有为
值提供实际值

由于用户使用
readFloats
函数输入值,因此实际上不需要向其传递参数。从
readFloats
中删除参数
值将使其正确执行:

# empty parameter list
def readFloats():
    # body of readFloats() 
此外,请注意Python附带了一组函数,这些函数在类似这样的上下文中非常有用。像
min()
max()
这样的函数将派上用场

@迪米特里斯·吉姆:(这是一个很好的解释,这就是我使用它的原因)
您的错误是由于您正在使用 在第一次调用函数readFloats(values)时命名值 没有为值提供实际值

由于用户使用readFloats函数输入值,因此 不需要向其传递参数。删除参数值 从readFloats将使其正确执行:

# empty parameter list
def readFloats():
    # body of readFloats() 
您只需通过以下方式实现:

根据您的代码:

def main():
    scores = readFloats()
    scores.sort()
    print("The final score is", sum(scores[2:]))


def readFloats():
    values = []
    userInput = raw_input("Please enter a value or Q to quit: ")
    while userInput != "Q":
        n = float(userInput)
        values.append(n)
        userInput = raw_input("Please enter a value or Q to quit: ")

    return values

main()
输出:

Please enter a value or Q to quit: 4
Please enter a value or Q to quit: 8
Please enter a value or Q to quit: 7
Please enter a value or Q to quit: 8.5
Please enter a value or Q to quit: 9.5
Please enter a value or Q to quit: 7
Please enter a value or Q to quit: 5
Please enter a value or Q to quit: 10
Please enter a value or Q to quit: Q
('The final score is', 50.0)

除了下面的答案之外,为什么要在readfloats方法中声明值…因此1)在main中声明values=list(),2)在readfloats中删除values=[],因为它会覆盖通过参数传入的values方法。您定义了一些函数。您可以调用
main
<代码>主
开始
main
查找
value
但不知道那是什么,因为它还不存在。谢谢,这很清楚。因此,当我提示用户输入时,我永远不应该在函数中插入参数变量?您实现特定函数的方式使附加参数变得不必要。您可以在函数中声明一个列表(
values=[]
)来保存这些值,这样就可以开始了。那么
sum(sorted(score)[2:])
呢?@danihp:it list comprehension。它将排序后的列表从索引2切片到最后一个值,然后求其和