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

IP地址分类代码仅返回[1,2]而非预期值,求故障原因

IP分类代码执行中断问题分析与修复

问题背景

需要对ip_addresses列表中的IP进行四类分类:

  • 1:IP在registered_list中
  • 2:IP在banned_list中
  • 3:IP不在上述列表且格式错误
  • 4:IP不在上述列表且格式正确

现有代码运行后仅输出[1,2],无法完成全部4个IP的判断,预期结果应为[1,4,2,3]。

核心错误原因

  1. 变量未初始化:每个IP的循环处理开始时,未给check变量设置初始值0。第一个IP处理后check被设为1,第二个IP既不在注册也不在封禁列表时,check仍为1,无法进入格式判断分支。
  2. 变量名错误触发异常:格式判断部分使用了ip.split("."),但循环变量是ip_ID,会直接抛出NameError,导致程序终止,这是代码停止执行的直接原因。
  3. 列表判断逻辑冗余且不完整:用嵌套循环判断IP是否在列表中,不仅效率低,且未处理“不在列表”的分支逻辑;同时找到匹配后未终止循环,可能重复添加结果。
  4. 格式校验逻辑错误:原校验条件仅单段匹配就标记合法,未检查所有四段都符合规则;且对数值长度的判断不合理(比如0的长度是1,但属于合法IP段)。

修复后的代码

ip_addresses = ["192.168.0.1","192.168.0.0","255.255.255.255","193.144.222.889"]
registered_list = ["192.168.0.1","123.123.123.123"]
banned_list = ["255.255.255.255"]

def solution(ip_addresses, registered_list, banned_list):
    answer = []
    for ip in ip_addresses:
        check = 0  # 每个IP处理前初始化状态
        # 检查是否在注册列表
        if ip in registered_list:
            check = 1
        # 检查是否在封禁列表(若需优先级互斥可调整为elif)
        elif ip in banned_list:
            check = 2
        else:
            # 校验IP格式
            parts = ip.split(".")
            # 先判断是否为4段结构
            if len(parts) != 4:
                check = 3
            else:
                valid = True
                for part in parts:
                    # 检查是否为纯数字、数值在0-255区间、无冗余前导零
                    if not part.isdigit() or not (0 <= int(part) <= 255):
                        valid = False
                        break
                    if len(part) > 1 and part.startswith("0"):
                        valid = False
                        break
                check = 4 if valid else 3
        answer.append(check)
    return answer

# 执行验证
print(solution(ip_addresses, registered_list, banned_list))  # 输出 [1,4,2,3]

修复说明

  • 每个IP循环开始时初始化check为0,确保状态不受上一个IP影响。
  • 用in关键字直接判断IP是否在列表中,简化逻辑并提升效率。
  • 修正变量名错误,统一使用ip作为循环变量避免命名混乱。
  • 完善格式校验逻辑:先判断段数是否为4,再逐段检查合法性,确保全段合规才标记格式正确。

内容的提问来源于stack exchange,提问作者Chun Seong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:05:21