You need to enable JavaScript to run this app. 如何编写Python FV函数创建含逐年变动值的账户金额列表
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Python FV函数创建含逐年变动值的账户金额列表

问题定位

现有代码的逻辑缺陷非常明确:

  • 在进入循环前,就把投资期限满t年的固定终值x*(1+r/100)**t赋值给了value变量,后续循环全程没有更新这个变量的值
  • 循环从0到t一共执行t+1次,每次都是把固定的终值追加到列表里,最终得到的列表所有元素都是同一个终值,完全没有体现逐年的金额变化
  • 循环内的if years <= t是冗余判断,range(t+1)生成的序列范围天然覆盖0到t的整数,这个判断不会对执行结果产生任何影响
修正方案

按照逐年复利滚存的逻辑调整计算流程,让每一年的账户余额都基于上一年的余额计算,保证列表里按顺序存放第0年到第t年的全部账户金额,匹配函数文档的返回要求:

  • 列表初始先存入第0年的金额,也就是初始投资x
  • 循环t次,每次把当前账户余额乘以年化收益率(注意把百分比形式的r转成小数,也就是除以100),得到下一年的金额,追加进列表
  • 全程不需要提前计算最终值,逐次滚动更新即可,计算效率更高
修正后完整代码
def FV(x, r, t):
    """
    inputs:
    x = amount invested
    r = rate (in % p.a.) accrued on the account each year
    t = number of years

    returns a list "acc" with amount on the account at 0, 1, ... t
    """
    acc = []
    # 存入初始投资时(第0年)的账户金额
    current_balance = x
    acc.append(current_balance)
    
    # 逐年计算滚存后的账户余额
    for _ in range(t):
        current_balance = current_balance * (1 + r / 100)
        acc.append(current_balance)
    
    return acc

# 测试调用
print(FV(100,5,7))
运行输出说明

执行上述代码会得到逐年动态变动的金额列表,不存在全为固定终值的问题:
[100, 105.0, 110.25, 115.7625, 121.550625, 127.62815625, 134.0095640625, 140.710042265625]
对应初始100元、年化5%利率的条件下,从投入当天到第7年的各时间点账户余额。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 00:45:07