Python报错TypeError: int与str无法执行+=运算的原因及解决
错误原因分析
报错TypeError: unsupported operand type(s) for +=: 'int' and 'str'的核心问题是:执行result += num时,num是字符串类型,而result是整数,两者无法直接做加法运算。你给出的测试用例[1,2,3,4,5]全是整数,但实际运行时传入的列表里肯定混了字符串形式的数字(比如['1', '2', '3']),才会触发这个错误。
解决方法
有两种实用的处理方式:
方式一:保证输入列表全为整数
检查调用sum_evens时传入的参数,把所有元素都改成整数类型,示例:
print(sum_evens([1, 2, 3, 4, 5])) # 全整数列表,正常执行
方式二:在函数内部兼容字符串类型的数字
如果没法确保输入全是整数,可以在函数里先把每个元素转为整数再判断,同时处理转换失败的情况:
def sum_evens(numbers): result = 0 for num in numbers: try: num_int = int(num) if num_int % 2 == 0: result += num_int except ValueError: # 遇到不能转成整数的元素,直接跳过 continue return result # 测试包含字符串数字的列表 print(sum_evens(['1', 2, '3', 4, '5'])) # 输出6
内容的提问来源于stack exchange,提问作者Abhishek Tiwari
相关产品推荐
相关产品推荐

