如何用Python计算投资到期增长收益率 代码输出不符合预期如何修正
你的代码存在以下几处问题
- 变量名引用错误:前两次通过
input()获取的输入值都存储在变量a中,但转换为浮点型时错误引用了未定义的变量s,正常运行会直接抛出NameError。你能得到输出大概率是运行环境中提前定义过变量s,实际计算用的是s的历史值,而非你最新输入的本金和基准利率,基础数据完全错误。 - 未乘以投资年限:常规投资基准利率为年化收益率,总收益需要乘以实际投资年限,你的代码所有计算分支都没有乘
numberofyears参数,自然和预期结果不符。 - 大额利率加成逻辑可能不符合规则:当前代码中本金大于10万的分支采用
基准利率+上浮倍数*基准利率的计算方式,比如2年期大额计算出来是2.25倍基准利率,如果规则只是大额在对应期限利率基础上按系数上浮,直接乘系数即可,需要确认和你实际使用的计算规则是否匹配。 - 收益范围不匹配:当前代码计算的
growth是纯收益部分,如果你的预期结果是到期本息合计,需要在计算结果上额外加上本金principal。
修正后的参考代码
a = input('principal amount\n') principal = float(a) a = input('prime rate\n') prime = float(a) a = input('number of years\n') numberofyears = int(a) # 先按期限计算基础利率 if numberofyears <= 2: base_rate = prime elif numberofyears <= 4: base_rate = 1.15 * prime else: base_rate = 1.25 * prime # 按本金档位调整最终利率,你可以根据实际规则调整加成逻辑 if principal <= 100000: final_rate = base_rate else: if numberofyears <= 2: final_rate = base_rate + 1.25 * prime elif numberofyears <= 4: final_rate = base_rate + 1.5 * prime else: final_rate = base_rate + 2 * prime # 单利计算总收益,如需计算本息合计改为 principal * (1 + final_rate * numberofyears) growth = principal * final_rate * numberofyears print(growth)
内容的提问来源于stack exchange,提问作者Ayesha Javed
相关产品推荐
相关产品推荐

