0

我在这个程序中需要一些帮助。我需要帮助弄清楚如何让它计算超过十年的利息(包括第一个)。这是我自己得到的。我将不胜感激对这个问题的一些见解。

谢谢。*"print() 仅用于间距,以便程序看起来更干净。

p= int(input(" Intial Amount? "))
print()
r= float(input(" Rate? (Decimal) "))
print()
n= int(input(" Number Of Times Compunded? (Yearly) "))
print()
t= float(input(" Number Of Years? "))
A= p*(1+r/n)**(n*t)
print()
print( " Interest At Final Year","$",format(A, ',.2f'))
print()
for i in range (10):
    print(format(i+1, '3')," Year","Interest","$",format(A,',.2f'))
4

2 回答 2

3

在循环体中,您不会更新任何变量的值。您需要在每次迭代时更新 A 或将中间结果存储在其他变量中。例如,请参见以下内容:

def compound_interest(r, n, initial):
    current_value = initial
    for i in range(n):
        current_value *= (1 + r)
        print(current_value)

我使用 current_value 变量来保存循环的中间结果。如果我在每次迭代中都简单地完成了 initial * (1 + r) 那么 initial 的值永远不会改变;如果您想继续使用它,必须保存计算的结果。

于 2012-11-27T01:58:03.307 回答
0

在程序的最后,它将计数 1-10,但它的数量与第一次计算的数量相同。

是的,那是因为在那个循环中唯一发生的事情就是print调用。A在进入循环之前,您只是一次计算所有内容,然后A一遍又一遍地使用相同的内容。

我需要帮助使它添加新值以在“n”和“p”发生变化时相加。

好吧,你没有改变nor p,我认为你不需要这样做。但是你确实需要改变一些东西。如果您想A通过循环打印每次的不同值,则必须A根据上一年的 重新计算下一年的A值,或者确定正确值的任何其他内容。

例如:

for year in range (10):
    jan1balance = p
    for period in range(n):
        p = p * (1 + r)
    print(format(year+1, '3')," Year","Interest","$",format(p - jan1balance,',.2f'))

或者:

for year in range (10):
    yearlyinterest = 0
    for period in range(n):
        periodinterest = p * r
        yearlyinterest += periodinterest
        p += periodinterest
    print(format(year+1, '3')," Year","Interest","$",format(yearlyinterest,',.2f'))
于 2012-11-27T02:24:56.320 回答