Python求和时报TypeError: 'int' object is not iterable怎么解决
报错产生原因
- Python内置
sum()函数要求传入可迭代对象(如列表、元组、range对象等)才能完成累加计算,你代码中item_value是持仓数量乘持仓单价得到的单个整数,不属于可迭代对象,直接传入sum()就会触发TypeError: 'int' object is not iterable报错 - 原代码逻辑存在额外问题:总价值变量
sum_value被定义在for循环内部,每次循环都会被重置为0,无法完成多只股票的价值累加计算
修复方法
如果你需要同时输出单只股票持仓价值和整体总持仓价值,可参考如下修改后的代码:
portfolio = [('AAPL',5, 140),('FB',3, 330)] sum_value = 0 for i in portfolio: # 元组本身可以直接下标取值,不需要额外转list item_value = i[1] * i[2] print(f"{i[0]}持仓价值:{item_value}") sum_value += item_value print(f"总持仓价值:{sum_value}")
如果你只需要计算总持仓价值,可以用更简洁的生成器表达式实现:
portfolio = [('AAPL',5, 140),('FB',3, 330)] sum_value = sum(item[1] * item[2] for item in portfolio) print(sum_value)
内容的提问来源于stack exchange,提问作者Ethan Pan
相关产品推荐
相关产品推荐

