根据给出的公式,编写房贷计算器。妥妥的数学计算,把数学公式“翻译”成代码就好。
(笔记模板由python脚本于2024年01月06日 18:08:55创建,本篇笔记适合初具基本编程能力的coder翻阅)
Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
??自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
????????????—— 华罗庚
本文质量分:
CSDN质量分查询入口:http://www.csdn.net/qc
题目描述截屏图片
房贷计算公式如下:
每
月
月
供
参
考
=
贷
款
金
额
×
[
月
利
率
×
(
1
+
月
利
率
)
还
款
月
数
]
÷
[
(
1
+
月
利
率
)
还
款
月
数
?
1
]
每月月供参考 = 贷款金额 × [月利率 × (1 + 月利率) ^ {还款月数}] ÷ [(1 + 月利率) ^ {还款月数} - 1]
每月月供参考=贷款金额×[月利率×(1+月利率)还款月数]÷[(1+月利率)还款月数?1]
还
款
总
额
=
每
月
月
供
参
考
×
期
限
×
12
还款总额 = 每月月供参考 × 期限 × 12
还款总额=每月月供参考×期限×12
支
付
利
息
=
还
款
总
额
?
贷
款
金
额
×
10000
支付利息 = 还款总额 - 贷款金额 × 10000
支付利息=还款总额?贷款金额×10000
??以上计算方式中月利率(
月
利
率
=
利
率
÷
12
月利率 = 利率 ÷ 12
月利率=利率÷12)指以月为计息周期计算的利息。不同贷款类型的利率是不同的:对于商业贷款而言,五年以下(含五年)的贷款利率是4.75%,五年以上的贷款利率是4.90%;对于公积金贷款利率而言,五年以下(含五年)的贷款利率是2.75%,五年以上的利率是3.25%。
??本案例要求编写程序,根据以上计算方式开发一个房贷计算器。
??这“支付利息”怎么理解啊,怎么感觉那后面的“$ × 10000$”不大对劲哩?
??这个题目就是妥妥的数学计算,把给出的公式“翻”成代码就大功告成。😋
&emsp&emk但不是没有一点技巧,“月供参考”公式中有两个相同的部分“
(
1
+
月
利
率
)
还
款
月
数
(1 + 月利率) ^ {还款月数}
(1+月利率)还款月数”,如果直接代入数据,相同的计算在一个公式中分别计算两次,这是不Python的行为
。我们可以先行计算“
(
1
+
月
利
率
)
还
款
月
数
(1 + 月利率) ^ {还款月数}
(1+月利率)还款月数”的值赋给一个变量保存,在公式中直接引用变岂不更妙!
“月供参考”公式可以简化为:
e
x
p
o
n
e
n
t
=
(
1
+
月
利
率
)
还
款
月
数
exponent = (1 + 月利率) ^ {还款月数}
exponent=(1+月利率)还款月数
每
月
月
供
参
考
=
贷
款
金
额
×
(
月
利
率
×
e
x
p
o
n
e
n
t
)
÷
(
e
x
p
o
n
e
n
t
?
1
)
每月月供参考 = 贷款金额 × (月利率 × exponent) ÷ (exponent - 1)
每月月供参考=贷款金额×(月利率×exponent)÷(exponent?1)
??贷款年利率、贷款金额、贷款期限都从键盘输入,简单实现。
代码运行效果截屏图片
Python代码
#!/sur/bin/nve python
# coding: utf-8
def calculatorMortgage(rate, money, year):
''' 房贷计算器 '''
rateMonth = rate/12/100 # 月利率。
months = 12*year # 贷款期限。
exponent = (1+rateMonth)**months # 月供计算指数
monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
moneys = monthly*months # 还款总额。
return round(moneys, 2), round(moneys-money, 2) # 返回还款总额和支付利息。
if __name__ == '__main__':
data = input(f"\n输入年利率、贷款金额、贷款期限:\n{'':>10}(如4.75 50000 3):\n\n{'':>11}$ ").strip()
data = map(eval, data.split())
result = calculatorMortgage(*data)
print(f"\n输出:\n应还总金额:{result[0]:.2f}\n利息:{result[1]}")
??只输入贷款金额和期限,贷款类型选择,由贷款类型和期限确定贷款利率。
贷款金额和期限输入
错误输入将退出程序
Python代码
title = f"\033[2J{' 房贷计算器 ':=^35}\n\n"
data = input(f"{title}\n{' 输入贷款金额、贷款期限(年) ':^28}\n{'':~^40}\n{'(如20000 3)':^39}\n\n{'':>13}$ ").strip()
try:
money, year = map(eval, data.split())
except Exception as error:
print(f"\n{' 输入错误!':~^35}\n\n\n{'':=^40}\n")
exit()
代码运行效果截屏图片
选择错误,重试。直到选对
Python代码
def isFlag():
''' 贷款类型选择 '''
title = f"\033[2J{' 贷款类型选择 ':=^34}\n\n"
flag = input(f"{title}\n{'1. 商业贷款 2. 公积金贷款':^31}\n{'':~^40}\n\n{'':>6}选择序号:").strip()
if flag not in ('1', '2'):
input(f"\n\n{' 选择错误!':^35}\n{'':~^40}\n{'(请重试)':^36}")
isFlag()
else:
return flag
代码运行效果截屏
贷款利率确定代码
flag = isFlag() # 选择贷款类型。
if flag == '1':
rate = 4.9 if year > 5 else 4.75 # 商业贷款。
else:
rate = 3.25 if year > 5 else 2.75 # 公积金贷款。
计算输出代码
rateMonth = rate/12/100 # 月利率。
months = 12*year # 贷款期限。
exponent = (1+rateMonth)**months # 月供计算指数
monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
moneys = monthly*months # 还款总额。
print(f"{title}\n{'':>12}年利率:{rate}\n{'':>14}贷款:{money:.2f}\n{'':>14}期限:{year}年\n\n{'':>8}应还总金额:{moneys:.2f}\n{'':>10}其中利息:{moneys-money:.2f}\n\n{'':=^40}")
(源码较长,点此跳过源码)
# 简陋版 #
#!/sur/bin/nve python
# coding: utf-8
def calculatorMortgage(rate, money, year):
''' 房贷计算器 '''
rateMonth = rate/12/100 # 月利率。
months = 12*year # 贷款期限。
exponent = (1+rateMonth)**months # 月供计算指数
monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
moneys = monthly*months # 还款总额。
return round(moneys, 2), round(moneys-money, 2) # 返回还款总额和支付利息。
if __name__ == '__main__':
data = input(f"\n输入年利率、贷款金额、贷款期限:\n{'':>10}(如4.75 50000 3):\n\n{'':>11}$ ").strip()
data = map(eval, data.split())
result = calculatorMortgage(*data)
print(f"\n输出:\n应还总金额:{result[0]:.2f}\n利息:{result[1]}") # 年利率4.75,借5w,三年。
# 经典版 #
#!/sur/bin/nve python
# coding: utf-8
def isFlag():
''' 贷款类型选择 '''
title = f"\033[2J{' 贷款类型选择 ':=^34}\n\n"
flag = input(f"{title}\n{'1. 商业贷款 2. 公积金贷款':^31}\n{'':~^40}\n\n{'':>6}选择序号:").strip()
if flag not in ('1', '2'):
input(f"\n\n{' 选择错误!':^35}\n{'':~^40}\n{'(请重试)':^36}")
isFlag()
else:
return flag
def calculatorMortgage(): # 形参分别是年利率、贷款金额、贷款期限(年)。
''' 房贷计算器 '''
title = f"\033[2J{' 房贷计算器 ':=^35}\n\n"
data = input(f"{title}\n{' 输入贷款金额、贷款期限(年) ':^28}\n{'':~^40}\n{'(如20000 3)':^39}\n\n{'':>13}$ ").strip()
try:
money, year = map(eval, data.split())
except Exception as error:
print(f"\n{' 输入错误!':~^35}\n\n\n{'':=^40}\n")
exit()
flag = isFlag() # 选择贷款类型。
if flag == '1':
rate = 4.9 if year > 5 else 4.75
else:
rate = 3.25 if year > 5 else 2.75
rateMonth = rate/12/100 # 月利率。
months = 12*year # 贷款期限。
exponent = (1+rateMonth)**months # 月供计算指数
monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
moneys = monthly*months # 还款总额。
print(f"{title}\n{'':>12}年利率:{rate}\n{'':>14}贷款:{money:.2f}\n{'':>14}期限:{year}年\n\n{'':>8}应还总金额:{moneys:.2f}\n{'':>10}其中利息:{moneys-money:.2f}\n\n{'':=^40}")
if __name__ == '__main__':
calculatorMortgage()
我的HOT博:
??本次共计收集289篇博文笔记信息,总阅读量44.72w。数据采集于2023年12月11日 23:07:13,用时5分11.8秒。阅读量不小于4.0k的有17篇。
截屏图片
精品文章:
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: