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

Python相似车牌字符串判断代码提前返回True问题排查

车牌相似性校验代码问题修复

需求规则

判断两个车牌字符串是否相同或视觉相似,校验规则如下:

  • 属于同一分组的字符视为相似,分组为 [["0", "O", "Q"], ["1", "I", "T"], ["2", "Z"], ["5", "S"], ["8", "B"]]
  • 所有对应位置的字符都满足相同/相似要求才返回True,否则返回False
  • 车牌中的空格会先被移除再参与校验

报错现象

现有代码大部分测试用例可通过,但两个用例结果不符合预期:

  • "BOX"与"B0B"对比时代码返回True,实际应为False
  • "OXB"与"0BX"对比也存在相同问题

现有问题代码

from array import *

def similar_license_plates(plate1: str, plate2: str) -> bool:

  p1 = plate1.replace(" ","")
  p2 = plate2.replace(" ","")
  if p1 == p2:
    return True

  if len(p1) != len(p2):
    return False

  else:
    l = [["0", "O", "Q"], ["1", "I", "T"], ["2", "Z"], ["5", "S"], ["8", "B"]]

    x = list(zip(p1, p2))

    for a, b in x:
          if a == b:
            continue
          for c in l:
            if a in c:
              if b in c:
                return True
              return False
          if a == b:
            return True
          return False

问题根因

  1. 逻辑提前终止:只要任意一对对应位置的字符符合相似规则,就直接返回True,没有校验剩余所有位置的字符
  2. 错误分支返回:只要某一对字符不在同一个分组,就直接返回False,未完成全量字符校验
  3. 存在大量冗余的重复判断逻辑,干扰正常校验流程

修复后代码

def similar_license_plates(plate1: str, plate2: str) -> bool:
    # 移除所有空格后预处理
    p1 = plate1.replace(" ", "")
    p2 = plate2.replace(" ", "")
    # 长度不一致直接返回False
    if len(p1) != len(p2):
        return False
    
    # 构建字符到分组ID的映射表,提升查询效率
    group_map = {}
    groups = [["0", "O", "Q"], ["1", "I", "T"], ["2", "Z"], ["5", "S"], ["8", "B"]]
    for group_id, group_chars in enumerate(groups):
        for char in group_chars:
            group_map[char] = group_id
    
    # 逐个校验对应位置的字符
    for char1, char2 in zip(p1, p2):
        # 字符相同直接跳过当前校验
        if char1 == char2:
            continue
        # 任意字符不在分组中,或两个字符不属于同一分组,直接返回False
        if char1 not in group_map or char2 not in group_map or group_map[char1] != group_map[char2]:
            return False
    
    # 所有位置校验全部通过才返回True
    return True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:05