修复了Python中每年的折旧表

时间:2017-01-31 15:30:41

标签: python

我根据公式制作了一个固定折旧表:

Fixed rate = 1 - ((salvage / cost) ^ (1 / life))

到目前为止我有这段代码:

def FixedRateDepreciationTable(salvage,cost, life):
    rate = 1 - ((salvage / cost) ** (1 / life))
    print("Year       Depreciation       Book Value at the year-end")
    dv= cost * rate
    cost= cost - dv
    print("{0:4}    {1:>18}    {2:26}".format(1,"$"+str(round(dv,2)),cost))

FixedRateDepreciationTable(1000, 100000, 10)

结果如下:

Year       Depreciation       Book Value at the year-end
   1             $36904.27             63095.73444801933

我不确定如何在第一年与其他年份一起打印出来。如何使用我现在的代码以折旧和账面价值打印多年?

2 个答案:

答案 0 :(得分:1)

我不确定我是否已经获得了折旧公式(我已经为你给出的公式教授了不同的公式)但是如果需要你可以调整这个逻辑。

基本上我正在做的是将FixedRateDepreciationTable转变为 generator function ,这样它就会产生每年的折旧和新价值,直到最后产品的使用寿命。

在代码主体中,我迭代这个生成器并打印每个值。

def FixedRateDepreciationTable(salvage, cost, life):
    rate = 1 - ((salvage / cost) ** (1 / life))

    for year in range(1, life + 1):
        dv = cost * rate
        cost -= dv
        yield year, round(dv, 2), cost


if __name__ == '__main__':
    print("Year\tDepreciation\tBook Value at the year-end")
    for year, depreciation, new_value in FixedRateDepreciationTable(1000, 100000, 10):
        print("{0:4}\t{1:>18}\t{2:26}".format(year, depreciation, new_value))

<强>输出

Year    Depreciation    Book Value at the year-end
   1              36904.27           63095.73444801933
   2              23285.02           39810.71705534973
   3              14691.85            25118.8643150958
   4               9269.93          15848.931924611135
   5               5848.93                     10000.0
   6               3690.43           6309.573444801932
   7                2328.5          3981.0717055349724
   8               1469.19            2511.88643150958
   9                926.99          1584.8931924611134
  10                584.89           999.9999999999999

答案 1 :(得分:-1)

使用循环:

for year in range(1, life):

缩进代码行以将它们放入循环中。