从列表的输入中打印最小值和最大值函数
Posted
技术标签:
【中文标题】从列表的输入中打印最小值和最大值函数【英文标题】:Printing min and max function from input of a list 【发布时间】:2014-11-03 23:04:55 【问题描述】:每次我运行代码时都会收到“TypeError: 'int' object is not iterable”。
所以我的问题是:最后如何打印/使用 min 和 max 函数?因此,如果有人说类型 5、7、10 和 -1。如何让用户知道最高分是 10,最低分是 5? (然后我猜是从最高到最低排列。)
def fillList():
myList = []
return myList
studentNumber = 0
myList = []
testScore = int(input ("Please enter a test score "))
while testScore > -1:
# myList = fillList()
myList.append (testScore)
studentNumber += 1
testScore = int(input ("Please enter a test score "))
print ("")
print (":s :<5d".format("Number of students", studentNumber))
print ("")
print (":s ".format("Highest Score"))
print ("")
high = max(testScore)
print ("Lowest score")
print ("")
print ("Average score")
print ("")
print ("Scores, from highest to lowest")
print ("")
【问题讨论】:
附带说明,通常认为更 Pythonic 的做法是执行while True:
,只执行一次 input
(在循环顶部)而不是两次(在循环之前和底部),并在用户想要退出时使用break
语句进行中断。这样做的问题在于,如果你改变了input
行,你必须记住在两个地方都改变它——而且你几乎肯定会最终忘记改变其中一个,导致痛苦——追踪错误。
【参考方案1】:
你的问题是testScore
是一个整数。还能是什么?每次遍历列表时,您都将其重新分配给下一个整数。
如果你想,比如说,将它们附加到一个列表中,你必须实际这样做:
testScores = []
while testScore > -1:
testScores.append(testScore)
# rest of your code
现在很简单:
high = max(testScores)
事实上,您正在在代码的编辑版本中这样做:myList
包含所有 testScore
值。所以,就用它吧:
high = max(myList)
但实际上,如果你仔细想想,保持“跑步最大值”同样容易:
high = testScore
while testScore > -1:
if testScore > high:
high = testScore
# rest of your code
在用户从不输入任何测试分数的情况下,您将获得不同的行为(第一个会引发TypeError
询问空列表的最大值,第二个会给您-1),但要么一旦你决定了你真正想要发生的事情,这些很容易改变。
【讨论】:
【参考方案2】:如果你所有的分数都在一个数组中。
print("The max was: ",max(array))
print("The min was: ",min(array))
【讨论】:
以上是关于从列表的输入中打印最小值和最大值函数的主要内容,如果未能解决你的问题,请参考以下文章