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
相关产品推荐
相关产品推荐

