代码求助:从列表查找最大值的代码出错,求排查及max()函数建议
代码问题排查与优化建议
你的代码存在几个问题,逐一说明:
- 变量作用域问题:
biggestNumber是全局变量,在函数displayBiggest里修改它时,需要先声明global biggestNumber,否则函数会把它当成局部变量处理,导致无法修改全局的biggestNumber。 - 赋值错误:
biggestNumber == numbers[x]是比较运算符(用来判断是否相等),你需要的是赋值操作,应该写成biggestNumber = numbers[x]。 - 循环逻辑错误:
range(realLength)会生成0到8的序列(列表长度是10,realLength=9),这样会漏掉最后一个元素numbers[9],应该直接用range(len(numbers))遍历所有索引。- for循环里的
x = x + 1完全多余,for循环会自动迭代x的值,手动修改会打乱循环逻辑。
修正后的代码如下:
numbers = [34,23,65,435,34,56,67,454,34,2] biggestNumber = numbers[0] def displayBiggest(numbers): global biggestNumber for x in range(len(numbers)): if numbers[x] > biggestNumber: biggestNumber = numbers[x] displayBiggest(numbers) print(biggestNumber)
关于max()函数的用法
当然会更简单!Python内置的max()函数专门用来获取可迭代对象的最大值,你的需求一行代码就能搞定,完全不需要自己写循环:
numbers = [34,23,65,435,34,56,67,454,34,2] print(max(numbers))
直接就能输出列表里的最大值454,既简洁又不容易出错。
内容的提问来源于stack exchange,提问作者kei
相关产品推荐
相关产品推荐

