Python如何计算这个公式?

Python如何计算这个公式?,python,python-3.x,Python,Python 3.x,我正在研究这个问题,我知道它是正确的,但我不确定这个公式是如何工作的 balance: int = 484 monthlyPayRate: float = 0.04 annualInterestRate: float = .2 for i in range(12): balance = balance - (balance * monthlyPaymentRate) +\ ((balance - (balance * monthly

我正在研究这个问题,我知道它是正确的,但我不确定这个公式是如何工作的

    balance: int = 484
    monthlyPayRate: float = 0.04
    annualInterestRate: float = .2
    for i in range(12):
        balance = balance - (balance * monthlyPaymentRate) +\
        ((balance - (balance * monthlyPaymentRate)) * \
        (annualInterestRate/12))
    print("Remaining balance:", round(balance,2))
我只是试着通过范围(1)工作,我知道正确的答案是472.38

我会这样计算: 484–(484*0.04)=464.64美元(这是付款后利息前的余额) 464*(.2/12)=7.42美元(我们将剩余余额464.64乘以利率0.016) 464.64+7.424=$472(我们在剩余余额上加上利息以获得新余额)


当我尝试将这些数字插入python公式并手工操作时,我无法理解python是如何使其工作的。我希望有人能给我展示一下Python使用这个公式所采取的步骤

我可以想象它是这样做的:

balance = 484 - (484 * 0.04) + ((484- (484 *0.04)) * (0.2/12))
基本上就是这样写的,结果是472.38

但随后它将472.38替换为变量
balance
e再次计算12次,总是用新结果替换变量,最后返回
361.61

这些计算在软件和手工两方面对我都有效。

为了清晰起见:

balance = 484
monthlyPaymentRate = 0.04
annualInterestRate = .2
for i in range(12):
    paidoff = balance * monthlyPaymentRate
    newinterest = (balance - paidoff) * annualInterestRate/12
    balance = balance - paidoff + newinterest
    print("Balance after", i+1, "months", round(balance,2));

print("Remaining balance:", round(balance,2))
给出:

Balance after 1 months 472.38
Balance after 2 months 461.05
Balance after 3 months 449.98
Balance after 4 months 439.18
Balance after 5 months 428.64
Balance after 6 months 418.35
Balance after 7 months 408.31
Balance after 8 months 398.51
Balance after 9 months 388.95
Balance after 10 months 379.62
Balance after 11 months 370.5
Balance after 12 months 361.61

Remaining balance: 361.61
拆分计算可以实现这种情况:

>>> balance = 484
>>> totalpaid=0
>>> totalinterest=0
>>> monthlyPaymentRate = 0.04
>>> annualInterestRate = .2
>>> for i in range(12):
...     paidoff = balance * monthlyPaymentRate
...     newinterest = (balance - paidoff) * annualInterestRate/12
...     balance = balance - paidoff + newinterest
...     totalpaid = totalpaid + paidoff
...     totalinterest = totalinterest + newinterest
...
>>> print("Remaining balance:", round(balance,2))
Remaining balance: 361.61
>>> print("Total amount paid off:", round(totalpaid,2))
Total amount paid off: 203.98
>>> print("Total interest accrued:", round(totalinterest,2))
Total interest accrued: 81.59

但是这个公式在一个循环中运行了12次。每次迭代都会使用新的
balance
值。好的,请阅读您关于如何计算它的描述:这就是代码在每次迭代中所做的,它连续运行12次。代码的功能和手工计算的方式实际上有什么不同?