简体   繁体   中英

python compounding interest

I'm trying to figure out how to get the interest and principal to display correctly over the years. Here is the part of my code I am having trouble with:

print ('Luke\n-----')
print ('Year\tPrincipal\tInterest\t Total')

LU_RATE = .05
YEAR = 1
Principal = 100

for YEAR in range (1,28):

   # Calculating Luke's total using formula for compounding interest
   Lu_Total = (Principal * ((1 + LU_RATE) ** YEAR))

   # I realize it's a logical error occurring somewhere here
   Lu_Interest = #I'm not sure what to code here
   Lu_Principal = #And here

   # Displaying the Principal, Interest, and Total over the 27
   print (YEAR,'\t%.02f\t\t %.02f\t\t %.02f' %(Lu_Principal, Lu_Interest, Lu_Total))

This is what gets displayed (minus the comment symbols of course):

Luke
-----
Year    Principal    Interest    Total
1        #            #           105.00
2        #            #           110.25
3        #            #           115.76
4        #            #           121.55
5        #            #           127.63
6        #            #           134.01
#etc etc....

Every equation I've tried to code had the correct Interest for year one but ends up putting the Principal as the Total. Every year past that calculates out to the wrong numbers.

It should look like:

Luke
-----
Year    Principal    Interest    Total
1        100.00       5.00       105.00
2        105.00       5.25       110.25
3        110.25       5.51       115.76
#etc etc....

I've been working at it on and off throughout the day and just can't seem to figure it out. Thank you in advance for any help or suggestions.

This sounds like homework, so I'll be a little vague:

You have a loop. Your program executes from the top of the loop to the bottom of the loop, and then goes back and starts over at the top of the loop again.

You can change things by setting values in the bottom of the loop that will be used in the top of the loop next time.

For example, you can compute the interest based on this year's principal. You're doing that in the top of the loop.

At the bottom of the loop, after you print everything out for this year, you could change the (next year's) principal by adding (this year's) interest to it. Then 100 would become 105, etc.

And another contestant ;-)

print ('Luke\n-----')
print ('Year\tPrincipal\tInterest\t Total')

rate = .05
principal = 100.

for year in range (1, 28):
    # calculate interest and total
    interest = principal * rate
    total = principal + interest

    # displaying this year's values
    print(year,'\t%.02f\t\t %.02f\t\t %.02f' %(principal, interest, total))

    # next year's principal == this year's total
    principal = total

produces

Luke
-----
Year    Principal       Interest         Total
1       100.00           5.00            105.00
2       105.00           5.25            110.25
3       110.25           5.51            115.76
4       115.76           5.79            121.55

# ... etc ...

There may be another way to do this, but I think you have a few issues. One is that you need to base your "total" calculation (where you're multiplying the principal by the 1+rate ** year) on the original principal value, and you need to keep this value separate from the rest of the calculations.

So you can work with two names like p0 and pN , where p0 represents the initial principal at year 0, and pN represents the original principal PLUS accrued interest at year N, then we reassign pN at the end of the loop.

r = .05
p0, pN = 100, p0
for y in range(1,5):
    total = p0 * ((1+r)**y)
    i = total - pN
    print (y,'\t%.02f\t\t %.02f\t\t %.02f' %(pN, i, total))
    pN = total

The output is as you expect:

在此处输入图片说明

Here is what I did:

print ('Luke\n-----')
print ('Year\tPrincipal\tInterest\t Total')

LU_RATE = .05
YEAR = 1
Principal = 100
Prev_Principal = 100   #added to store previous year principal

for YEAR in range (1,28):

    # Calculating Luke's total using formula for compounding interest
    Lu_Total = (Principal * ((1 + LU_RATE) ** YEAR))

    Lu_Interest = Lu_Total - Prev_Principal

    Lu_Principal = Lu_Total - Lu_Interest

    Prev_Principal = Lu_Total


    # Displaying the Principal, Interest, and Total over the 27
    print (YEAR,'\t%.02f\t\t %.02f\t\t %.02f' %(Lu_Principal, Lu_Interest, Lu_Total))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM