如何在Python循环中实现递推计算,将结果作为下一轮的N值?
解决方案
你当前代码输出重复结果的核心原因是没有将每轮的计算结果回写到变量N中,每轮循环都在使用初始输入的固定N值做计算,只要在每次输出后更新N的值即可实现递推效果。
修改后代码(保留中间变量x)
def main(): N, p, E = eval(input("Initial, probability, average")) for i in range(10): x = (1 + E * p) * N print(x) N = x # 回写计算结果作为下一轮的初始N值 main()
更简洁的写法(直接更新N)
不需要额外定义x变量,直接更新N的值即可:
def main(): N, p, E = eval(input("Initial, probability, average")) for i in range(10): N = (1 + E * p) * N print(N) main()
额外提示
如果是生产环境使用,不建议用eval处理用户输入,存在代码注入风险,建议拆分输入后手动做类型转换:
# 输入样例:100 0.2 1.5 N, p, E = map(float, input("Initial, probability, average: ").split())
内容的提问来源于stack exchange,提问作者user796388
相关产品推荐
相关产品推荐

