You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义列表求最大最小值函数异常排查:部分场景运行错误

问题分析与修复方案

你的代码存在三个核心问题,直接导致了结果错误:

1. 未初始化最大/最小值变量

myMax和myMin没有初始值,若列表长度为1时会直接抛出NameError;即使列表长度大于1,初始的比较逻辑也会依赖错误的元素。

2. 循环起始位置与比较逻辑错误

循环从i=0开始,此时i-1 = -1,对应列表的最后一个元素,这完全违背了遍历找最值的逻辑。而且你每次是将当前元素与前一个元素比较,而非与当前记录的最大/最小值比较,这会导致最值被后续的相邻元素覆盖——比如错误案例中最后myMin被78覆盖,就是因为78比前一个元素134小,但它并不是整个列表的最小值。

3. 缺乏空列表边界处理

如果用户输入列表长度为0,程序会直接崩溃,没有做容错处理。


修复后的代码

# 查找整数列表中的最大和最小值
def find_max_min(my_list):
    # 处理空列表情况
    if not my_list:
        return None, None
    
    # 初始化最大最小值为列表第一个元素
    my_max = my_min = my_list[0]
    
    # 从第二个元素开始遍历比较
    for num in my_list[1:]:
        if num > my_max:
            my_max = num
        if num < my_min:
            my_min = num
    
    return my_max, my_min

# 输入列表
my_list = []
length = int(input("列表长度: "))
for _ in range(length):
    num = int(input())
    my_list.append(num)

max_val, min_val = find_max_min(my_list)
print(f"最大值: {max_val}, 最小值: {min_val}")

修复说明

  • 初始化my_max和my_min为列表第一个元素,确保后续比较有正确基准
  • 直接遍历列表元素(而非通过索引),逻辑更清晰,避免索引越界问题
  • 增加空列表判断,提升代码健壮性
  • 变量名采用PEP8规范,可读性更强

内容的提问来源于stack exchange,提问作者Lý Minh Phúc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:26:12