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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:36:28