Python我更改了变量,但是输出仍然是sam

2024-04-19 06:07:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经建立了一个非常基本的计算方法来计算可变年限的复利。我这样定义变量:

>>> initial = 100
>>> rate = 1.1
>>> years = 5
>>> final = (initial*rate**years)

我认为这段代码很好,因为我可以得到这样的正确答案:

>>> print(final)
161.051...

好的,现在我想给变量赋值,然后用新变量再试一次。所以我这样做:

>>> rate = 1.05
>>> print(final)
161.051...

不管我重新分配变量多少次,答案都是一样的。你知道吗

我错过了什么?我对所谓的指针算术有一些模糊的记忆,我想知道这是否相关,但我似乎在任何地方都找不到答案。你知道吗


Tags: 记忆答案代码定义rate地方算术initial
3条回答

根据对问题的注释,重新计算类似的内容的最简单方法是定义一个执行计算的函数。你知道吗

例如

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

假设你有两桶油漆:红色和蓝色。你从每一个桶里取些颜料,混合在第三个桶里。令人惊叹的!现在你有了额外的紫罗兰色。现在你把红色的油漆桶换成绿色的油漆桶。第三个桶的颜色会改变吗?不,为什么?你把颜色混在一起后就没碰过它。你知道吗

现在我们来谈谈你的代码。在乘法之后,你从来没有改变“final”变量,你只是改变了它的一个因子。所以要注意这个变化,你必须再次乘以:

>>>rate=1.05
>>>final=(initial*rate**years)
>>>print(final)

当你不再计算时,为什么最终的值会改变呢! 分配新的比率值后,需要再次计算final的值。只有python会计算final的新值。你知道吗

>>>rate=1.05
>>>final=(initial*rate**years)
>>>print(final)
127.62815625

相关问题 更多 >