如何修复代码以输出含利率的最终现金金额?解决TypeError报错
问题修复:TypeError及余额计算错误
错误原因分析
- 函数嵌套错误:
updateBalance函数被错误缩进在formatCurrency内部,导致无法被正确调用。 - 余额计算逻辑错误:
updateBalance里的计算完全偏离需求,没有用原始金额乘以利率,反而返回了函数本身,导致后续格式化时尝试对函数对象进行数值格式化,触发TypeError。 - 主程序缩进错误:主代码块被缩进,无法正常执行。
修复后的代码
def formatCurrency(money): moneyString = f'${money:.2f}' return moneyString def updateBalance(amount, interest): # 将百分比利率转为小数,计算新余额:本金*(1+利率) new_amount = amount * (1 + interest / 100) return new_amount ### Main Program ### savBal = float(input("Enter your savings balance: ")) chBal = float(input("Enter your checking balance: ")) savIR = float(input("Enter your saving interest rate %: ")) chIR = float(input("Enter your checking interest rate %: ")) savBal = updateBalance(savBal, savIR) chBal = updateBalance(chBal, chIR) print("Your updated savings balance is", formatCurrency(savBal)) print("Your updated checking balance is", formatCurrency(chBal))
关键修复点
- 调整函数缩进:把
updateBalance移到formatCurrency外面,成为独立的顶层函数。 - 修正余额计算:
new_amount = amount * (1 + interest / 100)——用户输入的利率是百分比(比如5代表5%),所以要除以100转成小数,再用本金乘以(1+利率)得到带利息的新余额。 - 返回正确值:
updateBalance返回计算后的金额,而不是函数本身。 - 主程序去缩进:确保主代码块没有缩进,能正常执行。
内容的提问来源于stack exchange,提问作者Jamie Lemon
相关产品推荐
相关产品推荐

