利息计算器在Python中

时间:2016-10-11 19:32:32

标签: python integer calculator

利息计算器让用户计算在他们的利息复合了一定年限后他们将在银行中拥有的金额。

注:A = P(1 + r)^ t其中A =总量,P =本金,r =利率,t =时间。

这就是我的尝试:

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)

我使用actual_principal,actual_rate和actual_time将字符串转换为(精确)整数...我使用float而不是int,因为float会保持带小数的输入,对吗?

但我在第9行收到错误消息

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

我假设'浮动' object指的是actual_principal或actual_rate,或两者,因为它们是我转换的两个值。那么,为什么他们不可赎回?如何修复此程序以正确计算兴趣?谢谢!

编辑

了解到python中的幂函数是**,并且隐含的乘法运算符不存在于python语法中。重写我的等式看起来像这样:

final_actual_rate = actual_rate + 1
B = actual_principal * final_actual_rate
A = B ** actual_time
print(A)

输入13.58用于"您目前在银行中有多少钱?",0.3为"您的利率是多少?"和&#34为5 ;多少年的利息复合了?",我得到了答案1714808.43561 - 所以计算器正常工作!

编辑2

用这个代替了我的等式 - 这是创建兴趣计算器的更好/更清洁的方法 - 虽然两者都会得到相同的结果:

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

2 个答案:

答案 0 :(得分:2)

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)

你所拥有的东西有些不对劲。 ^不是你在Python中的想法。 ^是一个XOR二元运算符而不是幂。如果你想要力量,你可以使用math.pow() module.

同样使用action_principal(1 + actual_rate)是错误的。您正尝试使用参数action_principal调用函数1 + actual_rate,而不是将其相乘。请尝试使用*

答案 1 :(得分:1)

您的代码错误:您将整个等式提升到实际时间的幂,而只是提升(1 + r)! 检查一下:

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((1 + actual_rate) , actual_time)
B = actual_principal*A


print(B)