编写计算测验分数总和的程序 - 列表

时间:2015-10-25 12:31:35

标签: python

我有这个问题,我正在努力:

问题:最后的测验得分是通过添加所有得分来计算的,除了最低的两个。编写一个程序,通过使用列表打印最终得分。

尝试:我认为我的一切都是正确的,除非我不确定我应该在' 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()

当我尝试运行此程序时,它会显示名称&#39;值&#39;没有在&#39; main&#39;中定义。功能。我不确定如何正确引用参考。应该提示用户输入值,如果输入的值是8,4,7,8.5,9.5,7,5,10,输出应该是50.有人能告诉我我的错误在哪里吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您的错误是由于您在第一次调用values时使用了名称readFloats(values)而未提供values的实际值。

由于用户使用readFloats函数输入值,因此您根本不需要将参数传递给它。从values中删除参数readFloats将使其正确执行:

# empty parameter list
def readFloats():
    # body of readFloats() 

另外,请注意Python附带了一组built-in函数,这些函数在这些上下文中非常有用。像min()max()这样的功能会派上用场。

答案 2 :(得分:1)

   @Dimitris Jim :(这是非常好的解释,这就是我使用它的原因)
  您的错误是由于您正在使用   在第一次调用函数readFloats(values)时命名值   没有提供值的实际值。

     

由于用户使用readFloats函数输入值,你真的   不需要传递参数。删除参数值   来自readFloats将使其正确执行:

只需通过List Comprehension

即可
>>> score = [8, 4, 7, 8.5, 9.5, 7, 5, 10]
>>> score.sort()
>>> score
[4, 5, 7, 7, 8, 8.5, 9.5, 10]
>>> sum(score[2:])
50.0
>>> 

根据你的代码:

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)