def calculate_equal_installment(principal: int, annual_rate: float, months: int):
"""
计算等额本息还款计划的各项数据
参数:
principal (float): 贷款本金
annual_rate (float): 年利率(百分比,例如5%)
months (int): 贷款期限(月数)
返回:
dict: 包含月还款额、总利息、总还款额及详细还款计划的字典
"""
monthly_rate = float(annual_rate / 100 / 12)
monthly_payment = principal * monthly_rate * (1 + monthly_rate) ** months / ((1 + monthly_rate) ** months - 1)
total_payment = monthly_payment * months
total_interest = total_payment - principal
schedule = []
remaining = principal
for month in range(1, months + 1):
interest = remaining * monthly_rate
principal_part = monthly_payment - interest
if month == months:
principal_part = remaining
interest = monthly_payment - principal_part
remaining -= principal_part
schedule.append({
'期数': month,
'月供': round(monthly_payment, 2),
'本金': round(principal_part, 2),
'利息': round(interest, 2),
'剩余本金': abs(round(remaining, 2))
})
return {
'月供': round(monthly_payment, 2),
'总利息': round(total_interest, 2),
'总还款': round(total_payment, 2),
'还款计划': schedule
}
money = int(input("请输入本金:"))
months = int(input("请输入总期数:"))
rate = float(input("请输入年利率:"))
print(f"等额本息,本金: {money}, 总期数{months}, 年利率{rate}")
loan = calculate_equal_installment(money, rate, months)
print(f"每月还款: {loan['月供']}")
print(f"总利息: {loan['总利息']}")
print(f"总还款: {loan['总还款']}")
print("\n")
previous_months = 12
print(f"前{previous_months}个月还款计划:")
total_interest = 0
for entry in loan['还款计划'][0:previous_months]:
total_interest += entry['利息'] * 100
print(
f"期数{entry['期数']}: 月供{entry['月供']}元 = 本金{entry['本金']}元 + 利息{entry['利息']}元,剩余本金{entry['剩余本金']}元")
print(f"前{previous_months}个月的总利息", total_interest / 100)
结果
请输入本金:100000
请输入总期数:60
请输入年利率:4.8
等额本息,本金: 100000, 总期数60, 年利率4.8
每月还款: 1877.97
总利息: 12678.45
总还款: 112678.45
前12个月还款计划:
期数1: 月供1877.97元 = 本金1477.97元 + 利息400.0元,剩余本金98522.03元
期数2: 月供1877.97元 = 本金1483.89元 + 利息394.09元,剩余本金97038.14元
期数3: 月供1877.97元 = 本金1489.82元 + 利息388.15元,剩余本金95548.32元
期数4: 月供1877.97元 = 本金1495.78元 + 利息382.19元,剩余本金94052.54元
期数5: 月供1877.97元 = 本金1501.76元 + 利息376.21元,剩余本金92550.77元
期数6: 月供1877.97元 = 本金1507.77元 + 利息370.2元,剩余本金91043.0元
期数7: 月供1877.97元 = 本金1513.8元 + 利息364.17元,剩余本金89529.2元
期数8: 月供1877.97元 = 本金1519.86元 + 利息358.12元,剩余本金88009.34元
期数9: 月供1877.97元 = 本金1525.94元 + 利息352.04元,剩余本金86483.41元
期数10: 月供1877.97元 = 本金1532.04元 + 利息345.93元,剩余本金84951.36元
期数11: 月供1877.97元 = 本金1538.17元 + 利息339.81元,剩余本金83413.2元
期数12: 月供1877.97元 = 本金1544.32元 + 利息333.65元,剩余本金81868.87元
前12个月的总利息 4404.56