从列表的输入中打印最小值和最大值函数

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))

【讨论】:

以上是关于从列表的输入中打印最小值和最大值函数的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表中显示最小值和最大值?

列表的最小值和最大值(不使用 min/max 函数)

如何从Dart中的列表中找到最小值和最大值?

dart - 如何从Dart中的列表中找到最小值和最大值

如何从从excel文件派生的大量字典中的值列表中查找最小值和最大值

python编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数