遇到问题

在网上找了一下,没有找到太满意的等额本息计算器,于是想到要不按自己的需求,让AI帮自己实现。

向AI提问

提问

请用python编写一个等额本息计算器,可以自定义金额、利率、期限,使用json格式打印每月的还款额、利息,用中文回答

回答

好的,以下是用Python编写的等额本息计算器的代码示例,并使用JSON格式打印每月的还款额和利息:
import json

def calculate_equal_installment_loan(principal, interest_rate, tenure):
    monthly_interest_rate = interest_rate / 12 / 100
    num_payments = tenure * 12

    # 计算每月还款额
    monthly_payment = (principal * monthly_interest_rate) / (1 - (1 + monthly_interest_rate) ** -num_payments)

    # 计算总还款额
    total_payment = monthly_payment * num_payments

    # 计算利息总额
    total_interest = total_payment - principal

    # 计算每月的还款额和利息
    monthly_payments = []
    for i in range(num_payments):
        interest = principal * monthly_interest_rate
        principal_payment = monthly_payment - interest
        principal -= principal_payment
        monthly_payments.append({'第{}月'.format(i+1): {'还款额': monthly_payment, '利息': interest}})

    # 返回计算结果
    return {
        '每月还款额': monthly_payment,
        '总还款额': total_payment,
        '利息总额': total_interest,
        '每月还款详情': monthly_payments
    }

# 用户输入金额、利率和期限
principal = float(input("请输入贷款金额(元):"))
interest_rate = float(input("请输入年利率(%):"))
tenure = int(input("请输入贷款期限(年):"))

# 调用计算函数
result = calculate_equal_installment_loan(principal, interest_rate, tenure)

# 将结果以JSON格式打印出来
json_data = json.dumps(result, ensure_ascii=False, indent=4)
print(json_data)
用户可以根据提示输入贷款金额、年利率和贷款期限,程序将计算出每月还款额、总还款额、利息总额和每月的还款详情,并将结果以JSON格式打印出来。

希望对你有所帮助!

image.png

经过检验,上面代码可以直接使用。

结果如下:

E:\hhj\bygt\gz-ms\venv310\Scripts\python.exe E:/hhj/PycharmProjects/houjie.huang/tools/等额本息计算器2.py
请输入贷款金额(元):12000
请输入年利率(%):10
请输入贷款期限(年):2
{
    "每月还款额": 553.7391160501996,
    "总还款额": 13289.73878520479,
    "利息总额": 1289.7387852047905,
    "每月还款详情": [
        {
            "第1月": {
                "还款额": 553.7391160501996,
                "利息": 100.0
            }
        },
        {
            "第2月": {
                "还款额": 553.7391160501996,
                "利息": 96.21884069958168
            }
        },
        {
            "第3月": {
                "还款额": 553.7391160501996,
                "利息": 92.40617173832652
            }
        },
        {
            "第4月": {
                "还款额": 553.7391160501996,
                "利息": 88.56173053572758
            }
        },
        {
            "第5月": {
                "还款额": 553.7391160501996,
                "利息": 84.68525232310697
            }
        },
        {
            "第6月": {
                "还款额": 553.7391160501996,
                "利息": 80.7764701253812
            }
        },
        {
            "第7月": {
                "还款额": 553.7391160501996,
                "利息": 76.83511474267436
            }
        },
        {
            "第8月": {
                "还款额": 553.7391160501996,
                "利息": 72.86091473177834
            }
        },
        {
            "第9月": {
                "还款额": 553.7391160501996,
                "利息": 68.85359638745815
            }
        },
        {
            "第10月": {
                "还款额": 553.7391160501996,
                "利息": 64.81288372360197
            }
        },
        {
            "第11月": {
                "还款额": 553.7391160501996,
                "利息": 60.73849845421366
            }
        },
        {
            "第12月": {
                "还款额": 553.7391160501996,
                "利息": 56.630159974247114
            }
        },
        {
            "第13月": {
                "还款额": 553.7391160501996,
                "利息": 52.48758534028084
            }
        },
        {
            "第14月": {
                "还款额": 553.7391160501996,
                "利息": 48.31048925103152
            }
        },
        {
            "第15月": {
                "还款额": 553.7391160501996,
                "利息": 44.098584027705115
            }
        },
        {
            "第16月": {
                "还款额": 553.7391160501996,
                "利息": 39.85157959418432
            }
        },
        {
            "第17月": {
                "还款额": 553.7391160501996,
                "利息": 35.56918345705086
            }
        },
        {
            "第18月": {
                "还款额": 553.7391160501996,
                "利息": 31.25110068544129
            }
        },
        {
            "第19月": {
                "还款额": 553.7391160501996,
                "利息": 26.897033890734974
            }
        },
        {
            "第20月": {
                "还款额": 553.7391160501996,
                "利息": 22.50668320607277
            }
        },
        {
            "第21月": {
                "还款额": 553.7391160501996,
                "利息": 18.079746265705047
            }
        },
        {
            "第22月": {
                "还款额": 553.7391160501996,
                "利息": 13.61591818416759
            }
        },
        {
            "第23月": {
                "还款额": 553.7391160501996,
                "利息": 9.11489153528399
            }
        },
        {
            "第24月": {
                "还款额": 553.7391160501996,
                "利息": 4.5763563309930255
            }
        }
    ]
}

进程已结束,退出代码0

改进版本

提问

请用python编写一个等额本息计算器,可以通过变量自定义金额、利率、期限、还款开始日期,每一期的还款日都是27日,使用excel文件保存期次、每月的还款额、本金、利息、还款日期,金额四舍五入保留两位小数,用中文回答

回答

好的,以下是用Python编写的等额本息计算器的代码示例,可以通过变量自定义金额、利率、期限和还款开始日期,每一期的还款日都是27日,并将期次、每月的还款额、本金、利息和还款日期保存到Excel文件中,金额会四舍五入保留两位小数:
import pandas as pd
import datetime

def calculate_equal_installment_loan(principal, interest_rate, tenure, start_date):
    monthly_interest_rate = interest_rate / 12 / 100
    num_payments = tenure * 12

    # 计算每月还款额
    monthly_payment = (principal * monthly_interest_rate) / (1 - (1 + monthly_interest_rate) ** -num_payments)
    monthly_payment = round(monthly_payment, 2)

    # 创建日期列表
    dates = [datetime.datetime(start_date.year, start_date.month, 27) + datetime.timedelta(days=30 * i) for i in range(num_payments)]

    # 计算还款计划数据
    repay_plan = []
    for i in range(num_payments):
        due_date = dates[i]
        interest = round(principal * monthly_interest_rate, 2)
        principal_payment = monthly_payment - interest
        principal -= principal_payment
        repay_plan.append({
            '期次': i + 1,
            '每月还款额': monthly_payment,
            '本金': principal_payment,
            '利息': interest,
            '还款日期': due_date.strftime('%Y-%m-%d')
        })

    return repay_plan

# 用户输入金额、利率、期限和还款开始日期
principal = round(float(input("请输入贷款金额(元):")), 2)
interest_rate = float(input("请输入年利率(%):"))
tenure = int(input("请输入贷款期限(年):"))
start_date_str = input("请输入还款开始日期(YYYY-MM-DD):")
start_date = datetime.datetime.strptime(start_date_str, '%Y-%m-%d')

# 调用计算函数
repay_plan = calculate_equal_installment_loan(principal, interest_rate, tenure, start_date)

# 将还款计划保存到Excel文件
df = pd.DataFrame(repay_plan)
df.to_excel('repay_plan.xlsx', index=False)

print("还款计划已保存到 repay_plan.xlsx 文件。")
请确保安装了pandas库。运行代码后,将会生成一个名为 `repay_plan.xlsx` 的Excel文件,其中包含等额本息还款计划的数据,金额会四舍五入保留两位小数。

希望对你有所帮助!

可以使用,结果如下,但还款日期不符合我的逾期: image.png