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

