Python如何通过循环计算存款达目标金额所需的复利期数
复利计息周期计算函数纠错指南
原有代码问题点
- 死循环风险:循环内部没有更新本金
d的值,判断条件d*(1+r)<=t的结果永远不会变化,代码会一直卡在循环里跑不出来 - 计数缺失:没有定义专门统计计息周期的变量,根本无法累计经过了多少期
- 逻辑错位:代码里的
new_deposit只计算了单期利息值,既没有更新总存款,也和周期统计完全无关 - 返回值错误:末尾
return periods是返回函数对象本身,不是计算得到的数字结果,完全不符合需求 - 冗余定义:函数外声明的全局变量
new_deposit = 0没有任何实际作用,还可能触发变量作用域报错
正确实现逻辑
- 第一步:初始化两个变量,一个用来存当前的存款金额(避免直接修改传入的初始本金参数),一个用来累计计息周期数,初始值为0
- 第二步:用循环判断当前存款是否达到目标金额:没达到就进入下一个计息周期
- 第三步:每进入一次循环,代表经过了1个计息周期,先给周期计数+1,再按照复利公式更新当前存款金额:
当前金额 = 当前金额 * (1 + 利率) - 第四步:当当前存款大于等于目标金额时退出循环,返回累计的周期计数即可
修正后可运行代码
def periods(d, r, t): period_count = 0 current_deposit = d while current_deposit < t: period_count += 1 current_deposit = current_deposit * (1 + r) return period_count # 测试示例 输出结果为15,符合预期 print(periods(1000, 0.05, 2000))
验证说明:1000元本金按5%复利计算,14期后总金额约为1979.93元,未达到2000元目标;15期后总金额约为2078.93元,满足目标要求,因此返回结果正确。
内容的提问来源于stack exchange,提问作者user19362138
相关产品推荐
相关产品推荐

