如何用代码计算自己的汽车贷款是否着数(划得来)?

汽车贷款的原理其实并不复杂,一般来说,每月还贷金额不要超过每月工资总额的30%基本就可以了,但是呢,划不划算就需要计算一下了。

由于我不是富豪,所以我会选择汽车分期,而汽车分期呢实际上是一种分期付款的信用贷,不需要抵押。贷款期限主要集中在3-10年左右,有些是15年,但利息会较高的。

还好,我是做过财务,这些计算难不到我,以下是代码:

from decimal import Decimal, getcontext

getcontext().prec = 50  # 设置精度

loan_amount = Decimal(input("请输入你的汽车贷款金额:"))
annual_interest_rate = Decimal(input("请输入你的贷款年利率(例如:0.05):"))
loan_years = int(input("请输入你的汽车贷款年限:"))
car_amount=Decimal(input("请输入你的汽车售价:"))

monthly_payment = (loan_amount * (annual_interest_rate / 12)) / (1 - (1 + (annual_interest_rate / 12)) ** (-loan_years * 12))

无论是等额本金还是年额本息,计算出本利和除以贷款利限就可以了。

然后判读是否超出你的工资水平。

当然,由于通货膨胀和工资增长率对你的未来的工资水平都会有影响,这部分我会加上去。

monthly_salary = float(input("请输入你的月薪:"))
inflation_rate = float(input("请输入通货膨胀率(例如:0.02):"))
salary_growth_rate = float(input("请输入年工资增长率(例如:0.03):"))

total_salary = 0
years = loan_years

for _ in range(years):
    total_salary += monthly_salary * 12
    monthly_salary += monthly_salary * (salary_growth_rate/12)
    monthly_salary /= (1 + (inflation_rate/12))

如果超出你的工资水平,那就不要贷款了,因为汽车只是一个消费品,你又不是真的做滴滴,并不是生产工具,如果没有超,那可以接下来计算是不是真的划算。

在理论上,汽车的折旧是按汽车的使用年限来的,当然,这里我按你贷款的年限来,毕竟你如果贷了10年,但汽车只用了5年,那就不准确了。

而汽车是有残值的,当然,不能真的按废品卖,最少能值10%吧。即10万元的车,最少还能值1万元。当然,这是简单的计算。

monthly_total_salary = Decimal(total_salary) / years / 12
monthly_burden = monthly_total_salary * Decimal("0.3")

car_annual=car_amount* Decimal('0.3')/years/12##汽车月折旧

结合以上代码,如果你每月的还款金额小于你每月的汽车折旧额,相对来说,是比较划算的。即你利用银行的钱跑赢了你的折旧成本。相反,就不划算了。

于是结合以上代码:具体的代码如下:

from decimal import Decimal, getcontext

getcontext().prec = 50  # 设置精度

def calculate_monthly_payment(loan_amount, annual_interest_rate, loan_years):
    monthly_interest_rate = annual_interest_rate / 12
    numerator = loan_amount * monthly_interest_rate
    denominator = 1 - (1 + monthly_interest_rate) ** (-loan_years * 12)
    return Decimal(numerator / denominator)

def can_repay_loan(age, monthly_salary, inflation_rate, salary_growth_rate, loan_amount, annual_interest_rate, loan_years):
    total_salary = 0
    years = loan_years

    for _ in range(years):
        total_salary += monthly_salary * 12
        monthly_salary += monthly_salary * (salary_growth_rate/12)
        monthly_salary /= (1 + (inflation_rate/12))

    monthly_total_salary = Decimal(total_salary) / years / 12
    monthly_burden = monthly_total_salary * Decimal("0.3")

    car_annual = car_amount * Decimal('0.9') / years / 12

    monthly_payment = calculate_monthly_payment(loan_amount, annual_interest_rate, loan_years)

    if monthly_payment > monthly_burden:
        return False, monthly_payment, car_annual
    else:
        return True, monthly_payment, car_annual

loan_amount = Decimal(input("请输入你的汽车贷款金额:"))
annual_interest_rate = Decimal(input("请输入你的贷款年利率(例如:0.05):"))
loan_years = int(input("请输入你的汽车贷款年限:"))
car_amount = Decimal(input("请输入你的汽车售价:"))

monthly_salary = float(input("请输入你的月薪:"))
inflation_rate = float(input("请输入通货膨胀率(例如:0.02):"))
salary_growth_rate = float(input("请输入年工资增长率(例如:0.03):"))

repayable, monthly_payment, car_annual = can_repay_loan(age, monthly_salary, inflation_rate, salary_growth_rate, loan_amount, annual_interest_rate, loan_years)


if monthly_payment < monthly_burden:
    print("可以贷款,你每月还款金额为{:.2f}元。".format(float(monthly_payment)), "不会超过你的负担能力。")
    if car_annual >monthly_payment :
        print("而且很划算,小于汽车折旧{:.2f}元。".format(float(car_annual)))
    elif car_annual < monthly_payment :
        print("但并不划算,大于汽车折旧{:.2f}元。".format(float(car_annual)))   
        
elif monthly_payment > monthly_burden:
    print("不建议贷款,你每月还款金额为{:.2f}元。".format(float(monthly_payment)), "超过了你的负担能力。")

当然,为了循环使用,我加上循环语句,这样的话,可以不断的测试。

总的来说,很多4S店有分期贷款服务,打工人不会不考虑一下分期,但分期的方案很多,可以用上面的代码进行测算,另外,对于需要购买汽车但不确定是否应该贷款的人来说,上以代码也可以试试。

我不是专业的程序员,我只是分享一下财务知识,代码写得不好,不要见怪。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甘德东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值