Python统计交易列表收支总和及计算利润的代码实现
问题根因
代码的错误非常简单:三个统计变量income、expense、profit的初始化语句全写在了for循环内部。每次遍历一条交易记录时,变量都会被重置为0,之前累加的数值直接丢失,最后只会保留最后一条匹配记录的数值,根本算不出多笔交易的总金额。
另外收入、支出的打印语句也放在循环里,每碰到一条对应类型的记录就打印一次,输出的不是最终总额。
修正后代码
entries = [ {'date': '2021-01-01', 'transaction': 'Expense', 'amount': '50', 'note': 'Lemons'}, {'date': '2021-01-02', 'transaction': 'Income', 'amount': '100', 'note': 'Sales'} ] # 计算收入总额 income = 0 for entry in entries: if entry['transaction'].lower() == 'income': income += int(entry['amount']) print(f"总收入为:${income}") # 计算支出总额 expense = 0 for entry in entries: if entry['transaction'].lower() == 'expense': expense += int(entry['amount']) print(f"总支出为:${expense}") # 计算利润 profit = 0 for entry in entries: if entry['transaction'].lower() == 'expense': profit -= int(entry['amount']) elif entry['transaction'].lower() == 'income': profit += int(entry['amount']) print(f"总利润为:${profit}")
修正点说明
- 把三个统计变量的初始值0全部移到对应循环的外部,循环执行过程中只做数值累加,不会反复重置已经计算好的结果
- 把总额打印语句移到循环执行完成之后,仅输出最终统计的总数值,不会重复打印中间结果
- 利润的核心计算逻辑(收入累加、支出扣减)本身没有问题,只是初始值位置错误导致结果异常
运行代码后得到的正确输出为:
总收入为:$100 总支出为:$50 总利润为:$50
内容的提问来源于stack exchange,提问作者JGalin
相关产品推荐
相关产品推荐

