Python数学模型:怎么存钱最划算

问题的提出

当人们需要把钱存入银行赚取利息时,会有多种存款方式,每种存款方式的存期和利率都不相同。下表列出了银行部分整存整取项目的存款利率。

阿萌现在有1万元的本金,他希望在银行存款一年,按照上表列出的存款项目,阿萌如何存款才能让本金取得最好的收益?

建立数学模型

按照上表的存款项目,阿萌有下面几种存款方式:
(1)选择存款三个月的项目,复利存四次。即第一次存款三个月满期后,本金和利息再存三个月,以此类推,存满一年;
(2)选择存款六个月的项目,复利存两次。即第一次存款六个月满期后,本金和利息再存六个月,存满一年;
(3)选择存款一年的项目。
只要计算出上面三种存款方式的最终本金利息和,其中本金利息和最多的存款方式,就是最划算的存款方式。
计算本金利息和的数学模型为:

其中,F为本金利息和,P为本金,r为每期的利率,n为存期。这也是复利计算数学模型。
复利计算数学模型可以计算上面三种存款方式的本金利息和。第一种方式:r为年利率除以12乘以3,n为4(复利4次);第二种方式:r为年利率除以12乘以2,复利2次;第三种方式:r为1.75%,复利1次。

编写程序求解模型

复利计算数学模型需要用户输入本金,模型需要的存期和利率在程序内部设置。

程序流程图如下:

 

(1)接收用户输入的本金;
(2)判断用户输入的本金是否是整数;
(3)用模型计算三种存款方式的本金利息和,并存储到一个列表内;
(4)输出三种存款方式的本金利息和;
(5)输出提示信息,提示信息为“输入N退出程序,其它继续”;
(6)等待用户的输入,如果用户输入N,程序结束,否则跳转到步骤(1)。
程序代码如下:

'''
程序文件:main.py
功能描述:怎样存钱最划算
'''
# 程序入口
if __name__ == '__main__':

while(True):
# 接收用户输入的本金
P = input("请输入本金:")
# 本金是否是整数
if P.isdigit():
# 创建一个空列表
num_list = []
# 计算三个月的存款利息
r = 0.0135 / 12 * 3
# 计算三个月存款方式的本金利息和
F = int(P) * pow((1+r),4)
num_list.append("三个月存款,复利4次,本金利息和为:%.2f" % (F))
# 计算六个月的存款利息
r = 0.0155 / 12 * 6
# 计算六个月存款方式的本金利息和
F = int(P) * pow((1+r),2)
num_list.append("六个月存款,复利2次,本金利息和为:%.2f" % (F))
# 计算一年的存款方式
F = int(P) * pow((1+0.0175),1)
num_list.append("一年存款,复利1次,本金利息和为:%.2f" % (F))

else:
print("本金输入错误")
# 输出三种存款方式的本金利息和
for obj in num_list:
print(obj)
# 程序继续或退出
temp = input("输入N退出程序,其它继续:")
# 判断temp的内容
if temp == "N":
break;

代码解读

代码使用input函数获取用户输入的本金,并赋值给P,然后判断P是否是整数。若是整数,分别用模型计算三种存款方式的本金利息和,将计算结果保留2位有效小数后,以字符串的方式添加到num_list列表。最后遍历num_list列表,输出num_list列表的所有元素。
另外,存期为三个月或六个月的存款方式的利率为年利率,因此程序需要分别计算出三个月和六个月的利息。计算方式为年利率除以12,然后乘以3是三个月的利率,乘以6是六个月的利率。

从程序输出结果可以看出,10000元本金存期一年,还是选择一年存款方式最划算。虽然三个月和六个月的存款方式可以复利计算,但利息太低了。