You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环内变量终止while循环 及避免还款计算余额为负

核心修正点

  1. 循环终止条件优化
    删掉原有的固定24个月判断,将while循环条件改为balance > 0,只要剩余未还余额大于0就继续循环,结清后自动终止。

  2. 负值余额问题修复
    你原来的本金调整逻辑位置错误,应该放在「计算当期应还本金后、计算期末余额前」执行:

  • 若当期应还本金 ≥ 当前期初余额,说明这是最后一期,直接将应还本金设置为当前期初余额,同时当期还款额调整为「当期利息+实际应还本金」,确保期末余额刚好为0,不会出现负数。

修正后完整代码

# 可自行调整总价参数测试
price = 10000
DOWN_PAYMENT_RATE = 0.1
INTEREST_RATE = 0.12
PAYMENT_RATE = 0.05

balance = price - (price * DOWN_PAYMENT_RATE)
# 固定月还款额(最后一期单独计算)
fixed_payment = balance * PAYMENT_RATE

print("%0s%18s%13s%13s%12s%16s" % \
    ("Month", "Starting Balance", "Interest", "Principle", "Payment", "Ending Balance"))
count = 1

while balance > 0:
    # 计算当期利息
    interest = balance * INTEREST_RATE / 12
    # 计算当期应还本金(正常情况)
    principle = fixed_payment - interest
    # 当期实际还款额默认取固定还款额
    payment = fixed_payment
    
    # 最后一期特殊处理:应还本金不能超过当前剩余余额
    if principle >= balance:
        principle = balance
        payment = interest + principle
    
    # 计算期末余额
    endingBalance = balance - principle
    # 打印当期数据
    print("%2d%18.2f%13.2f%13.2f%12.2f%16.2f" % \
        (count, balance, interest, principle, payment, endingBalance))
    # 更新下期期初余额
    balance = endingBalance
    count += 1

内容的提问来源于stack exchange,提问作者Aces Radix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:15:00