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
相关产品推荐
相关产品推荐

