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

Python GIC函数循环返回值与预期不符问题排查

问题:GIC函数返回值与循环输出最终值不匹配

问题背景

代码分为Functions.py和t12.py两个文件,调用gic函数计算复利时,循环输出的第10年值为1628.89,但函数返回的最终值却是1710.34,两者不匹配。

当前代码

Functions.py

def gic(value, years, rate):
    print(f"\n{'Year':<2}{'Value $':>10s}")
    print("--------------")
    
    final_value = value
    
    for x in range(years + 1):
        print(f"{x:>2}{final_value:>12,.2f}")
        final_value *= (1 + (rate / 100))
        
    return final_value

t12.py

# Imports  
from functions import gic

# Inputs 
value = int(input("Value: "))
years = int(input("Years: "))
rate = float(input("Rate: "))

# Function calls
final_value = gic(value, years, rate)

print(f"\nFinal value: {final_value:.2f}")

当前输出(输入1000,10,5)

Value: 1000
Years: 10
Rate: 5

Year   Value $
--------------
 0    1,000.00
 1    1,050.00
 2    1,102.50
 3    1,157.62
 4    1,215.51
 5    1,276.28
 6    1,340.10
 7    1,407.10
 8    1,477.46
 9    1,551.33
10    1,628.89

Final value: 1710.34

期望输出

Value: 1000
Years: 10
Rate: 5

Year   Value $
--------------
 0    1,000.00
 1    1,050.00
 2    1,102.50
 3    1,157.62
 4    1,215.51
 5    1,276.28
 6    1,340.10
 7    1,407.10
 8    1,477.46
 9    1,551.33
10    1,628.89

Final value: 1628.89

问题原因

循环使用range(years + 1)会执行years+1次(从0到years)。每次循环先打印当前年份的final_value,再更新为下一年的值。当循环到第10次(x=10)时,打印完1628.89后,final_value会再次乘以1.05,变成1710.34并返回,导致返回值比最后一次打印的值多计算了一年复利。

修复方案

调整循环逻辑:先打印第0年的初始值,再循环years次,每次先计算下一年的值再打印。这样循环结束后,final_value正好是第years年的值,和打印的最后一行一致。

修改后的Functions.py

def gic(value, years, rate):
    print(f"\n{'Year':<2}{'Value $':>10s}")
    print("--------------")
    
    final_value = value
    # 打印第0年的初始值
    print(f" 0{final_value:>12,.2f}")
    
    # 循环years次,计算并打印第1到第years年的值
    for x in range(1, years + 1):
        final_value *= (1 + (rate / 100))
        print(f"{x:>2}{final_value:>12,.2f}")
        
    return final_value

验证结果

运行修改后的代码,输入1000,10,5,输出与期望完全一致:

Value: 1000
Years: 10
Rate: 5

Year   Value $
--------------
 0    1,000.00
 1    1,050.00
 2    1,102.50
 3    1,157.62
 4    1,215.51
 5    1,276.28
 6    1,340.10
 7    1,407.10
 8    1,477.46
 9    1,551.33
10    1,628.89

Final value: 1628.89

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:23:21