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

Python报错TypeError: unsupported operand type(s) for %: 'str' and 'int'求解

解决TypeError: unsupported operand type(s) for %: 'str' and 'int'问题

错误原因

你遇到的报错是因为传入sum_evens函数的列表中混有字符串类型的元素,而Python的取模运算符%不支持字符串和整数之间的运算,你的代码默认假设所有元素都是整数,因此触发了类型错误。

解决方案

根据你的输入场景,有两种常见处理方式:

1. 确保输入列表全为整数

如果是调用函数时传入了包含字符串的列表(比如["2", 4, "6"]),直接修正输入为纯整数列表即可:

# 正确调用示例
print(sum_evens([2, 4, 6]))  # 输出 12

2. 在函数内部兼容字符串类型的数字元素

如果无法控制输入源,需要在函数里先将元素转换为整数,同时处理转换失败的情况:

def sum_evens(numbers):
    total = 0
    for num in numbers:
        try:
            # 将元素转为整数
            num_int = int(num)
            if num_int % 2 == 0:
                total += num_int
        except ValueError:
            # 遇到无法转成整数的元素时跳过
            continue
    return total

这段代码通过try-except捕获转换失败的异常,确保函数不会因为无效元素崩溃,同时只累加能转成整数的偶数。

如果能确定所有字符串元素都是合法数字(不会出现"abc"这类无效值),也可以简化代码(不捕获异常,但风险较高):

def sum_evens(numbers):
    total = 0
    for num in numbers:
        num_int = int(num)
        if num_int % 2 == 0:
            total += num_int
    return total

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:10:25