如何通过循环迭代在列表中找到最大值?(python)



我的任务是创建两个函数,一个创建10个随机整数的列表,另一个应该使用循环(不使用max选项)在列表中找到最高的数字。我有困难与第二个功能(getHighest)。什么都没有返回/打印,我也没有得到一个错误。请帮助!

这是我尝试过的:

from random import randint
def main() :
MIN = -100
MAX = 100
LIST_SIZE = 10
scores = []
for i in range(LIST_SIZE):
scores.append(randint(MIN, MAX))
print(scores)

def getHighest(scores) :
highest = scores[0]
for score in range(0,len(scores)) :
if highest < score:
highest = score
print(f"Highest value: {highest}")

main()

代码差不多完成了。有一些方法可以修复它:

从列表中获取第n个元素:

scores[score]

这段代码可能可以工作,但这不是python的工作方式。让我们做一些修改:

range(len(scores))

range函数至少有一个参数:停止值。如果只传递一个参数,则默认的起始值为0,步长为1。然而,在Python世界中,这并不是最好的方法。

for语句遍历可迭代对象。Range返回一个数字序列。但是您可以遍历scores参数本身。并且score变量现在将保存实际值,而不是索引:

for score in scores :

如果需要值和索引,可以使用enumerate函数:

for ind, score in enumerate(scores) :

还有另一种方法可以在没有max函数的情况下获得列表的最大值:如果你有空闲的内存,你可以只是复制你的列表,对副本进行排序并获得最后一个元素(-1索引):

sorted_list = sorted(scores)

更好的是:你可以通过添加参数reverse=True来获得反向排序的列表,现在查看第一个元素(0)而不是最后一个元素:

sorted_list = sorted(scores, reverse=True)

正如一些评论员所指出的,为了使用getHighest函数,您需要调用它:

def main():
# ... 
print(scores)
getHighest(scores)

最后,我强烈建议阅读https://docs.python.org上的Python文档。例如,可以使用列表推导式生成随机数列表。

我以前做过同样的事情!我希望这能帮到你。除了之前的评论,我还推荐这个链接的W3schools

def getHighest():
highest = scores[0]
for i in range(len(scores)):
if score[i]>highest
highest=scores[i]
print("Highest value is:" highest)

最新更新