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

故障键盘手机号录入纠错需求及Python错误代码修正问询

问题描述

数据录入员使用的键盘存在故障,0和1按键不稳定、时常失灵。录入手机号时,按键失灵会用小写字母l(land首字母,非大写I)替代1,小写字母o替代0。

要求:

  • 接收10位输入字符串
  • 统计0、1被字母替代的次数:
    • 无替代时输出无错误
    • 有替代时输出错误数量及修正后的正确手机号

测试用例

测试用例1

输入:987o35l7o4
输出:

3处错误
9870351704

测试用例2

输入:9874618291
输出:无错误

错误代码分析与修正

原代码存在多处语法与逻辑问题,以下是问题说明及修正后的代码:

原错误代码

n1 = input()
n1 = n1.lower
mistake = 0
if len(n1) == 10:
    for a in range(0,len(n1)):
        if a == "o" or a == "i":
            mistake += 1
            print(mistake,"mistakes")
        elif a == 0 or a ==1:
            print("No mistakes")
else:
    print("The input value must be a 10 digit")

错误点说明

  1. 语法错误:n1 = n1.lower 未调用字符串的lower()方法,正确写法为n1 = n1.lower()
  2. 循环逻辑错误:for a in range(0,len(n1)) 遍历的是索引而非字符,应直接遍历字符串每个字符
  3. 判断条件错误:把替代字符写成了"i",实际需求是"l";判断数字时用了整数0/1,但字符是字符串类型,应使用"0"/"1"
  4. 输出时机错误:循环内每次判断都打印结果,需遍历完成后统一输出;且elif逻辑错误,不能遇到数字就直接输出无错误,需统计完所有错误后再判断
  5. 缺少修正逻辑:原代码未实现将o替换为0、l替换为1的手机号修正功能

修正后的代码

# 获取输入并转为小写,兼容大写O/L的情况
input_str = input().lower()
mistake_count = 0
corrected_phone = []

# 先检查输入长度是否符合要求
if len(input_str) != 10:
    print("输入必须是10位字符串")
else:
    # 遍历每个字符,完成替换与错误统计
    for char in input_str:
        if char == 'o':
            corrected_phone.append('0')
            mistake_count += 1
        elif char == 'l':
            corrected_phone.append('1')
            mistake_count += 1
        else:
            corrected_phone.append(char)
    
    # 拼接修正后的手机号
    corrected_phone_str = ''.join(corrected_phone)
    
    # 根据错误数量输出结果
    if mistake_count == 0:
        print("无错误")
    else:
        print(f"{mistake_count}处错误")
        print(corrected_phone_str)

代码说明

  1. 先将输入转为小写,确保大写O/L也能被正确识别处理
  2. 优先检查输入长度,不符合要求直接提示错误
  3. 遍历字符时同步完成替换与错误统计,逻辑清晰高效
  4. 遍历结束后统一输出结果,符合需求中的输出规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:17:31