题目要求:
房贷计算公式如下:
〉每月月供参考=贷款金额×[月利率×(1+月利率)^还款月数]÷{[(1+月利率)^还款月数]–1}>还款总额=每月月供参考×期限× 12
≥支付利息=还款总额–贷款金额×10000
以上计算方式中月利率(月利率=利率÷12))指以月为计息周期计算的利息。不同贷款类型的利率是不同的:对于商业贷款而言,五年以下(含五年)的贷款利率是4.75%,五年以上的贷款利率是4.90%;对于公积金贷款利率而言,五年以下(含五年)的贷款利率是2.75%,五年以上的利率是3.25%。
本案例要求编写程序,根据以上计算方式开发一个房贷计算器。
完整代码:
#核心计算公式
def payment_loan(interest_rate,loan_amount,loan_period):
monthly_interest_rate = interest_rate / 12
num_payments = loan_period * 12
monthly_payment = loan_amount * 10000 * (monthly_interest_rate * (1 + monthly_interest_rate) ** num_payments) / (
((1 + monthly_interest_rate) ** num_payments) - 1)
total_payment = monthly_payment * num_payments
interest_payment = total_payment - loan_amount * 10000
return{ "monthly_payment":monthly_payment,
"interest_payment":interest_payment,
"total_payment":total_payment}
#主函数
def calculate_loan():
while True:
payment={};
loan_type = input("请选择贷款类型:1.商业贷款 2.公积金贷款 3.组合贷款 0.退出:")
if loan_type=="0":
break;
if loan_type == "1":
#商业贷款计算
loan_amount = float(input("请输入贷款金额(万):"))
loan_period = int(input("请输入贷款期限(年)5 10 15 20 25 30:"))
interest_rate = 0.0475
if loan_period > 5:
interest_rate = 0.049
payment=payment_loan(interest_rate, loan_amount, loan_period)
elif loan_type == "2":
#公积金贷款计算
loan_amount = float(input("请输入贷款金额(万):"))
loan_period = int(input("请输入贷款期限(年)5 10 15 20 25 30:"))
interest_rate = 0.0275
if loan_period > 5:
interest_rate = 0.0325
payment=payment_loan(interest_rate, loan_amount, loan_period)
elif loan_type == "3":
# 混合贷款计算
loan_amount1 = float(input("请输入商业贷款金额(万):"))
loan_amount2 = float(input("请输入公积金贷款金额(万):"))
loan_period = int(input("请输入贷款期限(年)5 10 15 20 25 30:"))
interest_rate = 0.0475
if loan_period > 5:
interest_rate = 0.049
payment1 = payment_loan(interest_rate, loan_amount1, loan_period)
interest_rate = 0.0275
if loan_period > 5:
interest_rate = 0.0325
payment2=payment_loan(interest_rate, loan_amount2, loan_period)
for key in payment1:
payment[key]=payment1[key]+payment2[key]
else:
print("无效的贷款类型。")
return
#打印最终结果
print("每月月供参考:{:.2f} 元".format(payment["monthly_payment"]))
print("支付利息:{:.2f} 元".format(payment["interest_payment"]))
print("还款总额:{:.2f} 元".format(payment["total_payment"]))
calculate_loan()
实现思路:
该代码实现了一个房贷计算器的功能。主要包括以下功能:
-
payment_loan(interest_rate, loan_amount, loan_period)
函数用于计算贷款的月供、支付利息和还款总额。它接受利率(interest_rate)、贷款金额(loan_amount)和贷款期限(loan_period)作为参数,并返回一个包含月供、支付利息和还款总额的字典。 -
calculate_loan()
函数是主函数,它通过循环让用户选择贷款类型并输入相应的信息,然后调用payment_loan()
函数计算相应的贷款信息。根据不同的贷款类型,选择不同的利率和贷款金额,最后将计算结果显示给用户。
-
如果选择贷款类型为 "1"(商业贷款)或 "2"(公积金贷款),则要求用户输入贷款金额和贷款期限,并根据贷款期限设置相应的利率。然后调用
payment_loan()
函数计算贷款信息,并将结果存储在payment
字典中。 -
如果选择贷款类型为 "3"(组合贷款),则要求用户分别输入商业贷款金额和公积金贷款金额,以及贷款期限。根据贷款期限设置相应的利率,分别调用
payment_loan()
函数计算商业贷款和公积金贷款的贷款信息,并将结果存储在payment1
和payment2
字典中。然后,将两个字典中对应键的值相加,并将合并后的结果存储在payment
字典中。
最后,根据计算得到的贷款信息,使用格式化字符串将每月月供、支付利息和还款总额输出给用户。
实际效果: