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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:39:22