今日,与三五好友共谈购房,突发奇想写python代码确定应该当下购房还是晚几年攒钱购房。本方案不考虑房子涨幅、政策变化等问题。
当下购房优势:无需租房;晚几年购房优势:贷款金额减少。
本文通过对比一年时间租房成本与攒下来的钱少贷款的利息,判断是应该选择哪种购房方法。如果租房金额大于贷款减少部分的利息,则应优先考虑当下购房,反之应考虑晚几年购房。
本案例以北京市朝阳区垡头西里二区小区为例,分别计算两种等额本金与等额本息两种还款方式,读者可根据需求修改自己的房子数据。
对比内容一:当下购房与攒一年钱后购房差距,贷款年限均为30年
import math
location = "垡头西里二区"
area = 35
sale = 39661
house_price = area * sale # 房子总价
loan_ratio = 0.7 # 贷款比例
first = house_price * (1 - loan_ratio)
annual_interest_rate = 0.031 # 年利率
loan_duration = 30 # 贷款时间(年)
rent = 2600
money_save = 60000
loan_amount = house_price * loan_ratio # 计算贷款金额
monthly_interest_rate = annual_interest_rate / 12 # 计算每月利率
loan_duration_months = loan_duration * 12 # 贷款时间转换为月份
print("小区名称", location, "房子面积(m2)", area, "房价", sale, "房子总价:", house_price, "贷款比例:", loan_ratio, "首付", first,
"年利率", annual_interest_rate, "贷款年限", loan_duration, "租金:", rent, "租售比:", house_price / rent, "贷款总金额", loan_amount)
for i in range(2):
if i:
# 等额本金还款方式
# 使用贷款本金和贷款时间计算每月本金
monthly_principal = loan_amount / loan_duration_months
total_interest = 0 # 初始总利息为0
month_record = []
# 每个月计算利息并累加到总利息中
for j in range(loan_duration_months):
interest_payment = loan_amount * monthly_interest_rate # 计算本月利息
total_interest += interest_payment # 累加到总利息中
loan_amount -= monthly_principal # 更新剩余贷款本金
if j == 0:
month_record.append(interest_payment + monthly_principal)
elif j == 359:
month_record.append(interest_payment + monthly_principal)
total_interest_1 = total_interest
print("等额本金还款方式贷款总利息为:", total_interest_1)
print("等额本金每月还款金额区间为:", month_record)
# 假设一年攒钱15w,贷款金额变化
loan_amount = house_price * loan_ratio - money_save
monthly_principal = loan_amount / loan_duration_months
total_interest = 0 # 初始总利息为0
month_record_new = []
# 每个月计算利息并累加到总利息中
for j in range(loan_duration_months):
interest_payment = loan_amount * monthly_interest_rate # 计算本月利息
total_interest += interest_payment # 累加到总利息中
loan_amount -= monthly_principal # 更新剩余贷款本金
if j == 0:
month_record_new.append(interest_payment + monthly_principal)
if j == 359:
month_record_new.append(interest_payment + monthly_principal)
total_interest_2 = total_interest
print("每年攒钱后{}等额本金还款方式贷款总利息为:".format(money_save), total_interest_2)
print("等额本金每月还款金额区间为:", month_record_new)
print("------------------------------------")
print("每年房子租金:", rent*12)
print("晚一年盈亏", - rent*12 - total_interest_2 + total_interest_1)
else:
# 等额本息还款方式
loan_amount = house_price * loan_ratio
monthly_payment = (loan_amount * monthly_interest_rate * math.pow(1 + monthly_interest_rate,
loan_duration_months)) / (math.pow(1 + monthly_interest_rate, loan_duration_months) - 1)
total_interest_3 = monthly_payment * loan_duration_months - loan_amount
print("等额本息还款方式贷款总利息为:", total_interest_3)
print("等额本息每月还款:", monthly_payment)
loan_amount_change = house_price * loan_ratio - money_save
monthly_payment = (loan_amount_change * monthly_interest_rate * math.pow(1 + monthly_interest_rate,
loan_duration_months)) /(math.pow(1 + monthly_interest_rate, loan_duration_months) - 1)
total_interest_4 = monthly_payment * loan_duration_months - loan_amount_change
print("每年攒钱后{}等额本息还款方式贷款总利息为:".format(money_save), total_interest_4)
print("等额本息每月还款:", monthly_payment)
print("------------------------------------")
print("每年房子租金:", rent*12)
print("晚一年盈亏", - rent * 12 - total_interest_4 + total_interest_3)
print("------------------------------------")
运行结果:
小区名称 垡头西里二区 房子面积(m2) 35 房价 39661 房子总价: 1388135 贷款比例: 0.7 首付 416440.50000000006 年利率 0.031 贷款年限 30 租金: 2600 租售比: 533.8980769230769 贷款总金额 971694.4999999999
等额本息还款方式贷款总利息为: 522051.650411782
等额本息每月还款: 4149.294862254949
每年攒钱后60000等额本息还款方式贷款总利息为: 489816.1082483685
等额本息每月还款: 3893.0850229121343
------------------------------------
每年房子租金: 31200
晚一年盈亏 1035.5421634134836
------------------------------------
等额本金还款方式贷款总利息为: 453093.0478958265
等额本金每月还款金额区间为: [5209.362180555555, 2706.124196643494]
每年攒钱后60000等额本金还款方式贷款总利息为: 425115.54789583635
等额本金每月还款金额区间为: [4887.695513888888, 2539.0269744213088]
------------------------------------
每年房子租金: 31200
晚一年盈亏 -3222.500000009837
结果解读,如果采用等额本息方法贷款,一年可以攒钱6w,晚一年购房相比于当下购房省下来1035元。如果采用等额本金方法贷款,一年攒钱6w,当下购房比晚一年购房省3222元。
对比内容二:当下购房与攒十年钱后购房差距,其中,当下购房贷款30年,攒十年后贷款20年。
import math
location = "垡头西里二区"
area = 35
sale = 39661
house_price = area * sale # 房子总价
loan_ratio = 0.7 # 贷款比例
first = house_price * (1 - loan_ratio)
annual_interest_rate = 0.031 # 年利率
loan_duration = 30 # 贷款时间(年)
rent = 2600
money_save = 60000
loan_amount = house_price * loan_ratio # 计算贷款金额
monthly_interest_rate = annual_interest_rate / 12 # 计算每月利率
loan_duration_months = loan_duration * 12 # 贷款时间转换为月份
print("小区名称", location, "房子面积(m2)", area, "房价", sale, "房子总价:", house_price, "贷款比例:", loan_ratio, "首付", first,
"年利率", annual_interest_rate, "贷款年限", loan_duration, "租金:", rent, "租售比:", house_price / rent, "贷款总金额", loan_amount)
for i in range(2):
if i:
loan_amount = house_price * loan_ratio
print("贷款金额:", loan_amount)
loan_duration = 30
loan_duration_months = loan_duration * 12
# 等额本金还款方式
monthly_principal = loan_amount / loan_duration_months
total_interest = 0 # 初始总利息为0
month_record = []
# 每个月计算利息并累加到总利息中
for j in range(loan_duration_months):
interest_payment = loan_amount * monthly_interest_rate # 计算本月利息
total_interest += interest_payment # 累加到总利息中
loan_amount -= monthly_principal # 更新剩余贷款本金
if j == 0:
month_record.append(interest_payment + monthly_principal)
elif j == 359:
month_record.append(interest_payment + monthly_principal)
total_interest_1 = total_interest
print("等额本金还款方式贷款总利息为:", total_interest_1)
print("等额本金每月还款金额区间为:", month_record)
loan_duration = 20
loan_amount = house_price * loan_ratio - money_save * (30-loan_duration)
print("攒钱十年后贷款金额:", loan_amount)
loan_duration_months = loan_duration * 12
monthly_principal = loan_amount / loan_duration_months
total_interest = 0 # 初始总利息为0
month_record = []
# 每个月计算利息并累加到总利息中
for j in range(loan_duration_months):
interest_payment = loan_amount * monthly_interest_rate # 计算本月利息
total_interest += interest_payment # 累加到总利息中
loan_amount -= monthly_principal # 更新剩余贷款本金
if j == 0:
month_record.append(interest_payment + monthly_principal)
elif j == 239:
month_record.append(interest_payment + monthly_principal)
total_interest_2 = total_interest
print("攒钱十年后等额本金还款方式贷款总利息为:", total_interest_2)
print("攒钱十年后等额本金每月还款金额区间为:", month_record)
print("------------------------------------")
print("10年租金:", rent * 12 * 10)
print("盈亏:", - rent * 12 * 10 - total_interest_2 + total_interest_1)
print("------------------------------------")
else:
# 等额本息还款方式
loan_amount = house_price * loan_ratio
print("贷款金额:", loan_amount)
monthly_payment = (loan_amount * monthly_interest_rate * math.pow(1 + monthly_interest_rate,
loan_duration_months)) / (math.pow(1 + monthly_interest_rate, loan_duration_months) - 1)
total_interest_3 = monthly_payment * loan_duration_months - loan_amount
print("等额本息还款方式贷款总利息为:", total_interest_3)
print("等额本息每月还款:", monthly_payment)
loan_duration = 20
loan_amount = house_price * loan_ratio - money_save * (30 - loan_duration)
print("攒钱十年后贷款金额:", loan_amount)
loan_duration_months = loan_duration * 12
monthly_payment = (loan_amount * monthly_interest_rate * math.pow(1 + monthly_interest_rate,
loan_duration_months)) / (
math.pow(1 + monthly_interest_rate, loan_duration_months) - 1)
total_interest_4 = monthly_payment * loan_duration_months - loan_amount
print("攒钱十年后等额本息还款方式贷款总利息为:", total_interest_4)
print("攒钱十年后等额本息每月还款:", monthly_payment)
print("------------------------------------")
print("10年租金:", rent * 12 * 10)
print("盈亏:", - rent * 12 * 10 - total_interest_4 + total_interest_3)
print("------------------------------------")
运行结果:
小区名称 垡头西里二区 房子面积(m2) 35 房价 39661 房子总价: 1388135 贷款比例: 0.7 首付 416440.50000000006 年利率 0.031 贷款年限 30 租金: 2600 租售比: 533.8980769230769 贷款总金额 971694.4999999999
贷款金额: 971694.4999999999
等额本息还款方式贷款总利息为: 522051.650411782
等额本息每月还款: 4149.294862254949
攒钱十年后贷款金额: 371694.4999999999
攒钱十年后等额本息还款方式贷款总利息为: 127521.15490806557
攒钱十年后等额本息每月还款: 2080.065228783606
------------------------------------
10年租金: 312000
盈亏: 82530.4955037164
------------------------------------
贷款金额: 971694.4999999999
等额本金还款方式贷款总利息为: 453093.0478958265
等额本金每月还款金额区间为: [5209.362180555555, 2706.124196643494]
攒钱十年后贷款金额: 371694.4999999999
攒钱十年后等额本金还款方式贷款总利息为: 115705.40039583234
攒钱十年后等额本金每月还款金额区间为: [2508.937874999999, 1552.7279616319395]
------------------------------------
10年租金: 312000
盈亏: 25387.647499994142
------------------------------------
通过计算可知,在十年后购房采用等额本息方法省钱82530元,采用等额本金方法省钱25387元。