房贷计算器,一键计算晚买房一年少亏多少钱


# 定义公积金贷款的最大额度,单位为万元
max_provident_fund = 90

# 定义还款方式,1表示等额本息,2表示等额本金
principal_and_interest_or_principal = 2


# 定义计算每月还款额的函数
def calculate_monthly_payment(principal, annual_interest_rate, loan_term, method):
	# 计算月利率
	monthly_interest_rate = annual_interest_rate / 12
	# 计算贷款总月数
	total_months = loan_term * 12

	# 如果还款方式是等额本息
	if method == 1:  # 等额本息
		# 计算每月还款额
		monthly_payment = (principal * monthly_interest_rate * (1 + monthly_interest_rate) ** total_months) / (
				(1 + monthly_interest_rate) ** total_months - 1)
		return monthly_payment
	# 如果还款方式是等额本金
	elif method == 2:  # 等额本金
		# 初始化每月还款额列表
		monthly_payments = []
		# 逐月计算每月还款额
		for i in range(1, total_months + 1):
			monthly_payment = (principal / total_months) + (
					principal - (principal / total_months) * (i - 1)) * monthly_interest_rate
			monthly_payments.append(monthly_payment)
		return monthly_payments
	else:
		# 如果还款方式不合法,抛出异常
		raise ValueError("还款方式必须是1(等额本息)或2(等额本金)")


# 定义获取每月还款额的函数


def get_monthly_payment(totalHousePrice, down_payment, loan_term, provident_fund_interest_rate, commercial_loan_interest_rate, principal_and_interest_or_principal):
	"""
	:param totalHousePrice: 总价, 单位为万
	:param down_payment: 首付,单位为万
	:param loan_term: 贷款期限,单位为年
	:param provident_fund_interest_rate: 公积金利率
	:param commercial_loan_interest_rate: 商业贷款利率
	:param principal_and_interest_or_principal: 还款方式,1表示等额本息,2表示等额本金
	:return: 
	"""
	# 如果首付大于等于总房价,返回错误信息
	if down_payment >= totalHousePrice:
		return "首付不能大于总价"

	# 计算贷款总额
	loan_amount = totalHousePrice - down_payment

	# 计算公积金贷款金额,不能超过最大额度
	provident_fund_loan = min(loan_amount, max_provident_fund)
	# 计算商业贷款金额
	commercial_loan = loan_amount - provident_fund_loan

	# 如果还款方式是等额本息
	if principal_and_interest_or_principal == 1:  # 等额本息
		# 计算公积金贷款的每月还款额
		provident_fund_monthly_payment = calculate_monthly_payment(provident_fund_loan, provident_fund_interest_rate,
		                                                           loan_term, 1)
		# 计算商业贷款的每月还款额
		commercial_loan_monthly_payment = calculate_monthly_payment(commercial_loan, commercial_loan_interest_rate,
		                                                            loan_term, 1)
		# 计算总的每月还额
		total_monthly_payment = provident_fund_monthly_payment + commercial_loan_monthly_payment
		return total_monthly_payment, total_monthly_payment*loan_term*12
	# 如果还款方式是等额本金
	elif principal_and_interest_or_principal == 2:  # 等额本金
		# 计算公积金贷款的每月还款额列表
		provident_fund_monthly_payments = calculate_monthly_payment(provident_fund_loan, provident_fund_interest_rate,
		                                                            loan_term, 2)
		# 计算商业贷款的每月还款额列表
		commercial_loan_monthly_payments = calculate_monthly_payment(commercial_loan, commercial_loan_interest_rate,
		                                                             loan_term, 2)
		# 计算总的每月还款额列表
		total_monthly_payments = [pf + cl for pf, cl in
		                          zip(provident_fund_monthly_payments, commercial_loan_monthly_payments)]
		return total_monthly_payments, sum(total_monthly_payments)
	else:
		# 如果还款方式不合法,返回错误信息
		return "还款方式必须是1(等额本息)或2(等额本金)"


# 示例调用


# 获取每月还款额
monthly_payment_2024 = get_monthly_payment(100, 50, 20, 0.0285, 0.0355,principal_and_interest_or_principal)
monthly_payment_2021 = get_monthly_payment(150, 50, 30, 0.0290, 0.0365,principal_and_interest_or_principal)
print("还款额2024:", monthly_payment_2024[1])
print("还款额2021:", monthly_payment_2021[1])
print("差值:", monthly_payment_2021[1]-monthly_payment_2024[1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值