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

Python使用For循环动态写入文件及动态计算实现问题

实现代码与修改说明

完整可运行代码

def earnings(name, age, salary):
    AnnualRate = 0.05
    ageLimit = 65
    totalEarned = 0
    current_salary = salary
    # 自动管理文件打开关闭,避免资源泄露
    with open('yearly_earnings.txt', 'w', encoding='utf-8') as outFile:
        outFile.write('Prepared by: Amornchot Singh\n')
        outFile.write('Age\tSalary\tTotal\n')
        # 从起始年龄遍历到65岁,逐年计算写入
        for current_age in range(age, ageLimit + 1):
            totalEarned += current_salary
            # 写入当年数据到文件,用制表符分隔对齐
            outFile.write(f'{current_age}\t{current_salary:.2f}\t{totalEarned:.2f}\n')
            # 计算下一年涨薪后薪资
            current_salary *= (1 + AnnualRate)
    
    # 输出汇总信息
    print(f'summary for {name}')
    print(f'Starting salary at age {age} was {salary:.2f}')
    print('Salary increases were 5.0% per year')
    print('Total accumulated earnings by age 65 is {:,.2f}'.format(totalEarned))
    print("To view yearly data go to 'yearly_earnings.txt'")
    print("Thank you for using the earnings() function.")

核心修改点

  • 用with关键字管理文件操作,执行完自动关闭文件,不需要手动调用close方法,避免文件损坏或资源占用
  • 写入文件时添加\n换行符和制表符\t对齐内容,保证生成的txt文件格式清晰易读
  • 补全了循环逻辑:从传入的起始年龄开始,逐年计算当年薪资、累计收益,同步写入文件,不需要额外定义多余的循环变量
  • 修正了薪资计算逻辑:每年薪资在上一年基础上涨5%,而不是固定用初始薪资计算,累计收益计算结果准确
  • 所有输出统一用f-string格式化,避免数字和字符串直接拼接报错,格式更统一

内容的提问来源于stack exchange,提问作者Richie Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:48:04