python代码计算何时购房划算

今日,与三五好友共谈购房,突发奇想写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元。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值