Python中for循环计算结果无法累加求和问题求助
问题分析与解决
你的问题核心出在**valueperproduct的赋值逻辑**上:
- 第一个for循环里,每次迭代都会把
valueperproduct重新定义为仅包含当前产品计算值的新列表。循环结束后,这个变量只保留了最后一次循环的结果[16.5],后续累加自然只能得到这一个值。
修正方案1:初始化列表后追加元素
先创建空列表存储所有计算结果,再通过append方法逐步添加,避免每次覆盖变量:
# 初始化空列表 valueperproduct = [] for i in inventory: indexlist = inventory.index(i) # 将计算结果追加到列表,而非重新赋值 valueperproduct.append(inventory[indexlist] * cost[indexlist]) print(valueperproduct[-1]) # 打印当前产品的计算值 total = 0 for i in valueperproduct: total += i print(total)
修正方案2:直接在循环中累加(更高效)
省去存储中间值的列表,直接在第一个循环里完成累加操作:
total = 0 for i in inventory: indexlist = inventory.index(i) current_value = inventory[indexlist] * cost[indexlist] print(current_value) total += current_value # 直接累加当前值 print(total)
额外优化:规避index方法的潜在问题
如果inventory中存在重复元素,index(i)会返回第一个匹配元素的索引,导致计算错误。推荐用enumerate同时获取索引和元素:
total = 0 for idx, item in enumerate(inventory): current_value = inventory[idx] * cost[idx] print(current_value) total += current_value print(total)
内容的提问来源于stack exchange,提问作者kschu
相关产品推荐
相关产品推荐

