1.问题描述
假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,
他打算在今后5年中的每年年底取出1000元,到第5年时刚好取完,请
算出他存钱时应存入多少。
2.问题分析
根据题意,可以从第5年向前推算。已知“在今后5年中的每年年底
取出1000元,这样到第5年的时候刚好可以取完”,因此,第5年年底会
取出1000元,则可以计算出第5年年初在银行中所存的钱数为:
第5年年初存款数=1000/(1+12×0.0063)
据此推算出第4年、第3年直至第1年年初的银行存款数如下:
第4年年初存款数=(第5年年初存款数+1000)/(1+12×0.0063)
第3年年初存款数=(第4年年初存款数+1000)/(1+12×0.0063)
第2年年初存款数=(第3年年初存款数+1000)/(1+12×0.0063)
第1年年初存款数=(第2年年初存款数+1000)/(1+12×0.0063)
将推导过程用表格表示出来,如表1.3所示。
3.算法设计
根据上述分析,从第5年年初开始向前递推就可求出这个人应该在
银行中存钱的钱数。因此可以使用for循环语句,循环4次,每次循环都
在上一次的基础上加上1000,再除以(1+12×0.0063)。
4.完整的程序
根据上面的分析,编写程序如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 最佳存款方案
if __name__=="__main__":
i = 0
money = 0.0
while i < 5:
money = (money + 1000)/(1 + 0.0063 * 12)
i += 1
print("应该存入钱数为:%0.2f" %money) # 结果保留两位小数
5.运行结果
在PyCharm下运行程序,结果如图1.13所示。由于在程序中控制了
输出结果的小数位数为两位,因此最后的计算结果为4039.44。



