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

Python按支出类别次数循环询问费用的代码问题排查

你的循环代码存在这几个问题:
  • 无限循环问题:你的while循环条件是expenditureCategories>=0,但循环内部完全没有修改expenditureCategories的值,只要初始输入的数值大于等于0,这个循环就会一直运行停不下来。
  • 无意义的变量修改:循环里的previousYearExpenses = previousYearExpenses + 1和expensesOfInterest = expensesOfInterest + 1完全没必要,这会直接改掉用户刚输入的支出数值,对后续利率计算没有任何帮助。
  • 循环次数不匹配需求:你需要循环expenditureCategories次来收集对应类别的支出数据,但当前逻辑没有对循环次数做有效控制。
修正后的代码方案

推荐使用for循环,因为你明确知道循环的次数,代码逻辑更直观:

interestRateYear = 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: "))

# 循环对应次数的支出类别
for _ in range(expenditureCategories):
    previousYearExpenses = int(input("Please enter expenses for previous year: "))
    expensesOfInterest = int(input("Please enter expenses for year of interest: "))
    # 这里可以添加该类别利率的计算代码,示例:
    # if previousYearExpenses != 0:
    #     rate = ((expensesOfInterest - previousYearExpenses) / previousYearExpenses) * 100
    #     print(f"该类别利率为: {rate:.2f}%")
    # else:
    #     print("上一年支出不能为0,无法计算利率")

如果一定要用while循环,需要在每次循环后递减expenditureCategories来控制次数:

interestRateYear = 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: "))

# 初始条件改为大于0,确保循环指定次数后退出
while expenditureCategories > 0: 
    previousYearExpenses = int(input("Please enter expenses for previous year: "))
    expensesOfInterest = int(input("Please enter expenses for year of interest: "))
    # 每次循环后减少计数,直到为0时退出循环
    expenditureCategories -= 1
    # 这里添加利率计算逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:00:59