我有这个问题,我正在努力:
问题:最后的测验得分是通过添加所有得分来计算的,除了最低的两个。编写一个程序,通过使用列表打印最终得分。
尝试:我认为我的一切都是正确的,除非我不确定我应该在' 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.有人能告诉我我的错误在哪里吗?
答案 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)