房贷计算器,妥妥的数学计算

75 篇文章 0 订阅

根据给出的公式,编写房贷计算器。妥妥的数学计算,把数学公式“翻译”成代码就好。


(笔记模板由python脚本于2024年01月06日 18:08:55创建,本篇笔记适合初具基本编程能力的coder翻阅)


【学习的细节是欢悦的历程】


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


根据题目给出的公式
房 贷 计 算 器
(用代码“翻译”数学公式就好)


本文质量分:

91

本文地址: https://blog.csdn.net/m0_57158496/article/details/135429982

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 房贷计算器
    • 1、题目描述
    • 2、算法解析
      • 2.1 简陋版
    • 3、“经典”版
      • 3.1 输入贷款金额和期限
      • 3.2 贷款类型选择
      • 3.3 据贷款类型和期限确定贷款年利率
    • 4、完整源码(Python)


◆ 房贷计算器


1、题目描述


  • 题目描述截屏图片
    在这里插入图片描述

题目来源于CSDN问答社区提问“房贷计算器


房贷计算公式如下:

每 月 月 供 参 考 = 贷 款 金 额 × [ 月 利 率 × ( 1 + 月 利 率 ) 还 款 月 数 ] ÷ [ ( 1 + 月 利 率 ) 还 款 月 数 − 1 ] 每月月供参考 = 贷款金额 × [月利率 × (1 + 月利率) ^ {还款月数}] ÷ [(1 + 月利率) ^ {还款月数} - 1] =×[×(1+)]÷[(1+)1]
还 款 总 额 = 每 月 月 供 参 考 × 期 限 × 12 还款总额 = 每月月供参考 × 期限 × 12 =××12
支 付 利 息 = 还 款 总 额 − 贷 款 金 额 × 10000 支付利息 = 还款总额 - 贷款金额 × 10000 =×10000
  以上计算方式中月利率( 月 利 率 = 利 率 ÷ 12 月利率 = 利率 ÷ 12 =÷12)指以月为计息周期计算的利息。不同贷款类型的利率是不同的:对于商业贷款而言,五年以下(含五年)的贷款利率是4.75%,五年以上的贷款利率是4.90%;对于公积金贷款利率而言,五年以下(含五年)的贷款利率是2.75%,五年以上的利率是3.25%。

  本案例要求编写程序,根据以上计算方式开发一个房贷计算器。


  这“支付利息”怎么理解啊,怎么感觉那后面的“$ × 10000$”不大对劲哩?



回页目录


2、算法解析


  这个题目就是妥妥的数学计算,把给出的公式“翻”成代码就大功告成。😋
&emsp&emk但不是没有一点技巧,“月供参考”公式中有两个相同的部分“ ( 1 + 月 利 率 ) 还 款 月 数 (1 + 月利率) ^ {还款月数} (1+)”,如果直接代入数据,相同的计算在一个公式中分别计算两次,这是不Python的行为。我们可以先行计算“ ( 1 + 月 利 率 ) 还 款 月 数 (1 + 月利率) ^ {还款月数} (1+)”的值赋给一个变量保存,在公式中直接引用变岂不更妙!

“月供参考”公式可以简化为:

e x p o n e n t = ( 1 + 月 利 率 ) 还 款 月 数 exponent = (1 + 月利率) ^ {还款月数} exponent=(1+)
每 月 月 供 参 考 = 贷 款 金 额 × ( 月 利 率 × e x p o n e n t ) ÷ ( e x p o n e n t − 1 ) 每月月供参考 = 贷款金额 × (月利率 × exponent) ÷ (exponent - 1) =×(×exponent)÷(exponent1)


2.1 简陋版


  贷款年利率、贷款金额、贷款期限都从键盘输入,简单实现。


  • 代码运行效果截屏图片
    在这里插入图片描述

Python代码

#!/sur/bin/nve python
# coding: utf-8
def calculatorMortgage(rate, money, year):
    ''' 房贷计算器 '''
    rateMonth = rate/12/100 # 月利率。
    months = 12*year # 贷款期限。
    exponent = (1+rateMonth)**months # 月供计算指数
    monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
    moneys = monthly*months # 还款总额。
    return round(moneys, 2), round(moneys-money, 2) # 返回还款总额和支付利息。
if __name__ == '__main__':
    data = input(f"\n输入年利率、贷款金额、贷款期限:\n{'':>10}(如4.75 50000 3):\n\n{'':>11}$ ").strip()
    data = map(eval, data.split())
    result = calculatorMortgage(*data)
    print(f"\n输出:\n应还总金额:{result[0]:.2f}\n利息:{result[1]}")



回页目录


3、“经典”版


  只输入贷款金额和期限,贷款类型选择,由贷款类型和期限确定贷款利率。


3.1 输入贷款金额和期限

  • 贷款金额和期限输入
    在这里插入图片描述

    错误输入将退出程序
    在这里插入图片描述

Python代码


    title = f"\033[2J{' 房贷计算器 ':=^35}\n\n"
    data = input(f"{title}\n{' 输入贷款金额、贷款期限(年) ':^28}\n{'':~^40}\n{'(如20000 3)':^39}\n\n{'':>13}$ ").strip()

    try:
        money, year = map(eval, data.split())
    except Exception as error:
        print(f"\n{' 输入错误!':~^35}\n\n\n{'':=^40}\n")
        exit()



回页目录


3.2 贷款类型选择

  • 代码运行效果截屏图片
    在这里插入图片描述

    选择错误,重试。直到选对
    在这里插入图片描述

Python代码


def isFlag():
    ''' 贷款类型选择 '''
    title = f"\033[2J{' 贷款类型选择 ':=^34}\n\n"
    flag = input(f"{title}\n{'1. 商业贷款  2. 公积金贷款':^31}\n{'':~^40}\n\n{'':>6}选择序号:").strip()
    
    if flag not in ('1', '2'):
        input(f"\n\n{' 选择错误!':^35}\n{'':~^40}\n{'(请重试)':^36}")
        isFlag()
    else:
        return flag 



回页目录


3.3 据贷款类型和期限确定贷款年利率


  • 代码运行效果截屏
    在这里插入图片描述

贷款利率确定代码


    flag = isFlag() # 选择贷款类型。
    
    if flag == '1':
        rate = 4.9 if year > 5 else 4.75 # 商业贷款。
    else:
        rate = 3.25 if year > 5 else 2.75 # 公积金贷款。

计算输出代码


    rateMonth = rate/12/100 # 月利率。
    months = 12*year # 贷款期限。
    exponent = (1+rateMonth)**months # 月供计算指数
    monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
    moneys = monthly*months # 还款总额。
    print(f"{title}\n{'':>12}年利率:{rate}\n{'':>14}贷款:{money:.2f}\n{'':>14}期限:{year}年\n\n{'':>8}应还总金额:{moneys:.2f}\n{'':>10}其中利息:{moneys-money:.2f}\n\n{'':=^40}")



回页目录


4、完整源码(Python)

(源码较长,点此跳过源码)

# 简陋版 #
#!/sur/bin/nve python
# coding: utf-8
def calculatorMortgage(rate, money, year):
    ''' 房贷计算器 '''
    rateMonth = rate/12/100 # 月利率。
    months = 12*year # 贷款期限。
    exponent = (1+rateMonth)**months # 月供计算指数
    monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
    moneys = monthly*months # 还款总额。
    return round(moneys, 2), round(moneys-money, 2) # 返回还款总额和支付利息。
if __name__ == '__main__':
    data = input(f"\n输入年利率、贷款金额、贷款期限:\n{'':>10}(如4.75 50000 3):\n\n{'':>11}$ ").strip()
    data = map(eval, data.split())
    result = calculatorMortgage(*data)
    print(f"\n输出:\n应还总金额:{result[0]:.2f}\n利息:{result[1]}") # 年利率4.75,借5w,三年。

# 经典版 #
#!/sur/bin/nve python
# coding: utf-8


def isFlag():
    ''' 贷款类型选择 '''
    title = f"\033[2J{' 贷款类型选择 ':=^34}\n\n"
    flag = input(f"{title}\n{'1. 商业贷款  2. 公积金贷款':^31}\n{'':~^40}\n\n{'':>6}选择序号:").strip()
    
    if flag not in ('1', '2'):
        input(f"\n\n{' 选择错误!':^35}\n{'':~^40}\n{'(请重试)':^36}")
        isFlag()
    else:
        return flag 


def calculatorMortgage(): # 形参分别是年利率、贷款金额、贷款期限(年)。
    ''' 房贷计算器 '''
    title = f"\033[2J{' 房贷计算器 ':=^35}\n\n"
    data = input(f"{title}\n{' 输入贷款金额、贷款期限(年) ':^28}\n{'':~^40}\n{'(如20000 3)':^39}\n\n{'':>13}$ ").strip()

    try:
        money, year = map(eval, data.split())
    except Exception as error:
        print(f"\n{' 输入错误!':~^35}\n\n\n{'':=^40}\n")
        exit()

    flag = isFlag() # 选择贷款类型。
    
    if flag == '1':
        rate = 4.9 if year > 5 else 4.75
    else:
        rate = 3.25 if year > 5 else 2.75

    rateMonth = rate/12/100 # 月利率。
    months = 12*year # 贷款期限。
    exponent = (1+rateMonth)**months # 月供计算指数
    monthly = (money*(rateMonth*exponent))/(exponent-1) # 月供。
    moneys = monthly*months # 还款总额。
    print(f"{title}\n{'':>12}年利率:{rate}\n{'':>14}贷款:{money:.2f}\n{'':>14}期限:{year}年\n\n{'':>8}应还总金额:{moneys:.2f}\n{'':>10}其中利息:{moneys-money:.2f}\n\n{'':=^40}")

if __name__ == '__main__':
    calculatorMortgage()



回页首


上一篇:  “火火的”动态(集结我的人气Blink索引列表,Python脚本自动生成)
下一篇: 



我的HOT博:

  本次共计收集289篇博文笔记信息,总阅读量44.72w。数据采集于2023年12月11日 23:07:13,用时5分11.8秒。阅读量不小于4.0k的有17篇。

  1. ChatGPT国内镜像站初体验:聊天、Python代码生成等
    地址:https://blog.csdn.net/m0_57158496/article/details/129035387
    浏览阅读:6.2w
    点赞:127 收藏:809 评论:71
    (本篇笔记于2023-02-14 23:46:33首次发布,最后修改于2023-07-03 05:50:55)

  2. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:5.8w
    点赞:24 收藏:86 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  3. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:9.9k
    点赞:5 收藏:30 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  4. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:9.4k
    点赞:7 收藏:34 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  5. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:7.7k
    摘要:个人信息提取(字符串)_python个人信息提取。
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  6. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:7.2k
    评论:1
  7. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:7.2k
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  8. 斐波那契数列的递归实现和for实现
    地址:https://blog.csdn.net/m0_57158496/article/details/122355295
    浏览阅读:5.6k
    点赞:4 收藏:2 评论:8
  9. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:5.5k
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  10. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:5.3k
  11. 练习:字符串统计(坑:f‘string‘报错)
    地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    浏览阅读:5.1k
  12. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
    地址:https://blog.csdn.net/m0_57158496/article/details/121645399
    浏览阅读:5.1k
    点赞:14 收藏:44 
  13. 我的 Python.color() (Python 色彩打印控制)
    地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    浏览阅读:4.6k
    点赞:2 收藏:8 
    摘要:我的 Python.color() (Python 色彩打印控制)_python color。
    (本篇笔记于2022-02-28 22:46:21首次发布,最后修改于2022-03-03 10:30:03)

  14. 练习:生成100个随机正整数
    地址:https://blog.csdn.net/m0_57158496/article/details/122558220
    浏览阅读:4.6k
    (本篇笔记于2022-01-18 13:31:36首次发布,最后修改于2022-01-20 07:58:12)

  15. 密码强度检测器
    地址:https://blog.csdn.net/m0_57158496/article/details/121739694
    浏览阅读:4.4k
    (本篇笔记于2021-12-06 09:08:25首次发布,最后修改于2022-11-27 09:39:39)

  16. 罗马数字转换器(用罗马数字构造元素的值取模实现)
    地址:https://blog.csdn.net/m0_57158496/article/details/122608526
    浏览阅读:4.2k
    (本篇笔记于2022-01-20 19:38:12首次发布,最后修改于2022-01-21 18:32:02)

  17. 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)
    地址:https://blog.csdn.net/m0_57158496/article/details/124424935
    浏览阅读:4.0k
    摘要:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)_生日模拟问题,计算频率,并画出随着试验次数n的增大,频率和理论概率的 关系图。
    (本篇笔记于2022-04-26 12:46:25首次发布,最后修改于2022-04-27 21:22:07)

推荐条件 阅读量突破4.0k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

来源:老齐教室


Python 入门指南【Python 3.6.3】


好文力荐:


CSDN实用技巧博文:


  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦幻精灵_cq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值