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

Python验证IMEI合法性报错:TypeError: 字符串格式化参数未全转换

IMEI合法性验证脚本错误修复方案

错误原因

你遇到的TypeError: not all arguments converted during string formatting,核心问题有两个:

  • input()获取的用户输入是字符串类型,代码里直接对字符串执行n % 10——Python中字符串的%是格式化运算符(比如"Hello %s" % "World"),不是数值取模操作,因此触发错误。
  • 代码中用n = n / 10,Python3里/返回浮点数,后续循环的取模、除法操作会持续出错。

修复步骤

  1. 将输入转为整数:把用户输入的字符串转换成数值类型,才能进行取模、除法等数值运算。
  2. 改用整数除法:用//替代/,确保除法结果始终是整数,避免浮点数带来的后续问题。
  3. 避免使用内置函数名当变量:sum是Python内置函数,改成total作为累加变量名,避免命名冲突。

修正后的完整代码

def sumDig(n):
    a = 0
    while n > 0:
        a = a + n % 10
        n = n // 10
    return a

def isValidEMEI(n):
    s = str(n)
    l = len(s)
    if l != 15:
        return False

    d = 0
    total = 0  # 替换sum,避免和内置函数冲突
    for i in range(15, 0, -1):
        d = n % 10
        if i % 2 == 0:
            d = 2 * d
        total = total + sumDig(d)
        n = n // 10  # 整数除法,替代/
    return (total % 10 == 0)

# 输入转成整数
n = int(input("Enter number: "))
if isValidEMEI(n):
    print("Valid IMEI Code")
else:
    print("Invalid IMEI Code")

额外提示(可选)

如果要处理用户输入非数字的情况,可以加异常捕获:

try:
    n = int(input("Enter number: "))
except ValueError:
    print("Please enter a valid numeric IMEI")
    exit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:15:13