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

Python运行报TypeError:not all arguments converted during string formatting如何解决

报错原因

%符号在Python中有两种语义:

  1. 作用于数字时为取余运算符,符合你当前的代码逻辑预期
  2. 作用于字符串时为格式化运算符,会尝试将右侧参数填充到左侧字符串的%占位符位置

你遇到的报错是因为传入函数的列表中存在字符串类型的元素,执行num%100操作时Python将该逻辑识别为字符串格式化,但字符串中没有对应占位符,因此抛出该类型错误。你单独测试时传入的是纯整数列表所以运行正常,但实际业务调用时传入的counts变量包含字符串格式的数值。

解决方法

方案1(无异常场景直接修复)

直接在取余操作前将元素强制转换为整数,修改第28行的列表推导式即可:

_list = [int(num) % 100 for num in _list]

方案2(兼容异常元素场景)

如果列表中可能存在无法转换为整数的无效值,可以增加异常捕获逻辑,避免程序直接崩溃:

def ones_and_tens_digit_histogram(_list):
    processed_list = []
    for num in _list:
        try:
            # 先转整数再取余
            processed_num = int(num) % 100
            processed_list.append(processed_num)
        except (ValueError, TypeError):
            # 可根据业务需要选择跳过无效值、打印日志或抛出明确提示
            continue
    _list = processed_list
    # 后续原有逻辑保持不变
    _hist = []
    for i in range(10):
        sum = 0
        for num in  _list:
            if( int(num/10) == i):
                sum +=1
            if(num%10 == i):
                sum +=1
        _hist.append(sum/(len(_list)*2))
    return(_hist)

你也可以在调用函数前执行print([type(item) for item in counts]),确认传入的列表元素类型是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:03