如何将复利定投百万美元计算代码中range的固定值替换为fv>=1000000?
解决复利+每月投资达标月数的循环问题
你遇到的核心问题是for循环的range()只接受整数范围,无法直接用条件判断作为循环终止依据,这种需要动态判断直到目标达成的场景,应该用while循环来实现。
示例修改方案
假设你原来的可运行代码类似这样:
initial_balance = 0 monthly_deposit = 500 annual_interest_rate = 0.05 monthly_rate = annual_interest_rate / 12 future_value = initial_balance # 原来用固定次数的for循环 for month in range(92): future_value = future_value * (1 + monthly_rate) + monthly_deposit print(f"第{month+1}个月:{future_value:.2f}美元")
把它改成while循环,就能实现"直到future_value >= 1000000才停止"的逻辑:
initial_balance = 0 monthly_deposit = 500 annual_interest_rate = 0.05 monthly_rate = annual_interest_rate / 12 target_amount = 1000000 future_value = initial_balance month_count = 0 # 用while循环动态判断终止条件 while future_value < target_amount: future_value = future_value * (1 + monthly_rate) + monthly_deposit month_count += 1 # 可选:打印每月余额进度 # print(f"第{month_count}个月:{future_value:.2f}美元") print(f"达成{target_amount:,}美元共需要{month_count}个月")
关键说明
while循环会在每次循环开始前检查future_value < target_amount是否成立,只要条件为真就继续执行循环体- 要初始化
month_count来统计月数,每次循环后自增1 - 确保利率转换为月利率(年利率除以12),否则计算逻辑会出错
内容的提问来源于stack exchange,提问作者Gabriel De Assis Valente
相关产品推荐
相关产品推荐

