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

使用for循环计算个人通胀率结果错误,求修正方案

修复个人通胀率计算的for循环版本

原代码(Abdulmalik Abougarboa 编写)

while True:
    try:
        year = int(input('Please enter the year that you want to calculate the personal interest rate for: ')) 
        expenditureCategories = int(input('Please enter the number of expenditure categories: ')) 
        break 
    except:
        print('\nerror ~ please insure you have entered a valid integer') 

if expenditureCategories == 1:
    expensesPre1 = int(input('Please enter expenses for previous year: ')) 
    expensesinterest1 = int(input('Please enter expenses for year of interest: ')) 
    
    current = (expensesinterest1) 
    pre = (expensesPre1) 

    infRate = ((current - pre)/ current)*100 
    print (f'Personal inflation for {year} is {infRate}%') 

我编写的for循环版本(存在问题)

while True:
    try:
        year = int(input('Please enter the year that you want to calculate the personal interest rate for: ')) 
        expenditureCategories = int(input('Please enter the number of expenditure categories: ')) 
        break 
    except:
        print('\nerror ~ please insure you have entered a valid integer') 

for i in range(expenditureCategories): 
    while True: 
        try:
            expensesPre = int(input('Please enter expenses for previous year: '))
            expensesinterest = int(input('Please enter expenses for year of interest: '))
    
            current = (expensesinterest) 
            pre = (expensesPre) 

            infRate = ((current - pre)/ current)*100 
            break 
        except:
            print('\nerror ~ please ensure you have entered a valid integer')

print (f'Personal inflation for {year} is {infRate}%') 

测试输入数据

Please enter the year that you want to calculate the personal interest rate for: 2022
Please enter the number of expenditure categories: 2
Please enter expenses for previous year: 100
Please enter expenses for year of interest: 100
Please enter expenses for previous year: 200
Please enter expenses for year of interest: 300

问题说明

两段代码运行上述测试数据结果不同,原代码逻辑正确,需要修改for循环版本使其输出一致结果。

修复方案

问题核心:原代码逻辑是基于所有支出类别的总支出计算整体通胀率,而当前for循环版本仅保留了最后一个类别的单独通胀率。修改时需要累加所有类别的支出总和,再计算整体通胀率:

  1. 在循环前初始化两个总和变量,用于累加所有类别的去年和今年支出
  2. 循环内仅完成输入验证与总和累加,不单独计算单个类别通胀率
  3. 循环结束后用总支出计算整体通胀率

修改后的代码:

while True:
    try:
        year = int(input('Please enter the year that you want to calculate the personal interest rate for: ')) 
        expenditureCategories = int(input('Please enter the number of expenditure categories: ')) 
        break 
    except:
        print('\nerror ~ please insure you have entered a valid integer') 

# 初始化总支出累加变量
total_pre = 0
total_current = 0

for i in range(expenditureCategories): 
    while True: 
        try:
            expensesPre = int(input('Please enter expenses for previous year: '))
            expensesinterest = int(input('Please enter expenses for year of interest: '))
            # 累加当前类别的支出到总和
            total_pre += expensesPre
            total_current += expensesinterest
            break 
        except:
            print('\nerror ~ please ensure you have entered a valid integer')

# 用总支出计算整体通胀率
infRate = ((total_current - total_pre) / total_current) * 100 
print(f'Personal inflation for {year} is {infRate}%') 

运行测试数据后,会得到和原代码逻辑一致的结果:总去年支出300,总今年支出400,通胀率为(400-300)/400*100 = 25%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:30:42