我已经建立了一个非常基本的计算方法来计算可变年数的复利。我定义了这样的变量:
>>> initial = 100
>>> rate = 1.1
>>> years = 5
>>> final = (initial*rate**years)
我认为这段代码很好,因为我可以得到正确答案:
>>> print(final)
161.051...
好的,现在我想为变量分配一个新值,然后再使用新变量重试。所以我这样做:
>>> rate = 1.05
>>> print(final)
161.051...
无论我重新分配变量多少次,答案都会保持不变。
我错过了什么?我对一些叫做指针算术的东西有一些模糊的回忆,我想知道这是否完全相关,但我似乎无法找到答案。
答案 0 :(得分:3)
假设你有两桶油漆:红色和蓝色。你从每个油漆中取出一些油漆并在第3桶中混合在一起。真棒!现在你有额外的紫罗兰色。现在用绿色油漆桶替换红色油漆桶。第3桶的颜色会变化吗?不,为什么会这样?混合颜色后没有触摸它。
现在让我们谈谈你的代码。你永远不会在乘法后改变'final'变量,你只是改变了其中一个因素。所以要注意你必须再次增加的变化:
>>>rate=1.05
>>>final=(initial*rate**years)
>>>print(final)
答案 1 :(得分:0)
当你没有再次计算时,为什么最终改变的价值呢! 在分配新的价值后,您需要再次计算最终价值。然后只有python会计算最终的新值。
>>>rate=1.05
>>>final=(initial*rate**years)
>>>print(final)
127.62815625
答案 2 :(得分:0)
根据对问题的评论,这样重新计算的最简单方法是定义一个执行计算的函数。
E.g。
def calculate_final_loan_principal(initial, rate, years):
return initial*rate**years
然后可以这样调用:
>>> calculate_final_loan_principal(initial=100, rate=1.1, years=5)
161.05100000000004
>>> calculate_final_loan_principal(initial=100, rate=1.05, years=5)
127.62815625000003
为了清楚起见,参数名称包含在那里,但在调用函数时实际上并不需要:
>>> calculate_final_loan_principal(100, 1.05, 5)
127.62815625000003
或者,如果您定义了一个类,那么您可以使用属性。我认为这有点过分,但OP特别询问了这一点。
class CompoundInterestLoan:
def __init__(self, initial, rate, years):
self.initial = initial
self.rate = rate
self.years = years
@property
def final(self):
return self.initial*self.rate**self.years
然后,您需要创建该类的实例才能使用它:
>>> loan = CompoundInterestLoan(initial=100, rate=1.1, years=5)
>>> loan.final
161.05100000000004
>>> loan.rate = 1.05
>>> loan.final
127.62815625000003