HappyHands31 - 1 year ago 72

Python Question

**Interest Calculator** Let the user calculate the amount of money they will have in the bank after their interest has compounded for a certain number of years.

Note: A = P(1+r)^t where A = total amount, P = principal, r = rate, and t = time.

This is what I tried:

`principal = input("How much money do you currently have in the bank?")`

rate = input("What is your interest rate?")

time = input("Over how many years is the interest compounded?")

actual_principal = float(principal)

actual_rate = float(rate)

actual_time = int(time)

#TODO: Calculate the total amount and print the result

A = (actual_principal(1 + actual_rate) ^ actual_time)

print(A)

I used actual_principal, actual_rate, and actual_time to convert the strings into (exact) integers...I used float instead of int because float will maintain an input with decimals, right?

But I got an error message on line 9

`TypeError: 'float' object is not callable on line 9`

I'm assuming that the 'float' object refers to either actual_principal or actual_rate, or both, since those are the two values that I converted. Why, then, aren't they callable? How can I fix this program to calculate interest correctly? Thank you!

Learned that power function in python is ** and that implied multiplication operators don't exist in python syntax. Reworked my equation to look like this:

`final_actual_rate = actual_rate + 1`

B = actual_principal * final_actual_rate

A = B ** actual_time

print(A)

When entering 13.58 for "How much money do you currently have in the bank?", 0.3 for "What is your interest rate?", and 5 for "Over how many years is the interest compounded?", I got the answer 1714808.43561 - so the calculator works!

Replaced my equation with this one - it's a better / cleaner way to create the interest calculator - although both will get you the same result:

`A = math.pow(actual_principal*(1 + actual_rate) , actual_time)`

print(A)

Answer Source

```
import math
principal = input("How much money do you currently have in the bank?")
rate = input("What is your interest rate?")
time = input("Over how many years is the interest compounded?")
actual_principal = float(principal)
actual_rate = float(rate)
actual_time = int(time)
#TODO: Calculate the total amount and print the result
A = math.pow(actual_principal*(1 + actual_rate) , actual_time)
print(A)
```

A few things wrong with what you have. `^`

is not what you think it is in Python. `^`

is an XOR binary operator not power. If you want power you use math.pow() module.

Also using `action_principal(1 + actual_rate)`

is wrong. You are trying to call the function `action_principal`

with the argument `1 + actual_rate`

instead of multiplying it. Try `*`

instead.