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

Python实现getPrincipal贷款本金函数遇问题:返回None且无报错

问题排查与修复

原函数的核心问题

你的getPrincipal函数存在多个致命问题,导致返回None且逻辑完全错误:

  • 第一行直接return:函数执行到return就立即终止,返回None,后续的变量初始化、循环代码根本不会运行。
  • 变量名冲突:用presentValue作为循环迭代变量,覆盖了你之前定义的presentValue函数,导致无法调用原函数计算现值。
  • 循环范围硬编码:写死了range(1,240),没有使用传入的num_months参数,无法适配不同的贷款期限。
  • 循环体未缩进:Python依赖缩进识别代码块,for循环后的代码没有缩进,即使前面的return去掉,也会触发语法错误。
  • 逻辑错误:循环里直接累加迭代变量,没有调用presentValue计算每个月还款额的现值,完全不符合需求。

修正后的函数代码

def presentValue(amount, num_months, interest): 
    return amount / (1 + interest) ** num_months

def getPrincipal(amount, num_months, interest):
    total_principal = 0
    # 循环遍历每个还款月,计算该月还款的现值并累加
    for month in range(1, num_months + 1):
        total_principal += presentValue(amount, month, interest)
    return total_principal

测试验证

用你的测试代码运行:

A = 100
interest = 0.01
num_months = 240
P = getPrincipal(A, num_months, interest)
print(P)

此时会输出正确的贷款本金现值总和(约9081.94)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 04:02:38