Python for循环迭代变量与常量相乘得到意外结果是什么原因
代码运行结果不符原因说明
首先拆解你的代码实际执行流程:
- 你定义的初始值
x=1是可更新的全局变量,range(3)返回的迭代序列为0、1、2 - 第一次迭代
i=0时,执行x *= i等价于x = x * i = 1 * 0 = 0,此时x的值被永久覆盖为0 - 第二次迭代
i=1时,执行x *= i等价于x = 0 * 1 = 0,x仍为0 - 第三次迭代
i=2时,执行x *= i等价于x = 0 * 2 = 0,x保持为0
因此最终输出三次0,和你的预期不符。
你预期的输出0、1、2对应的逻辑是每次计算都使用x的初始值1和当前i相乘,不更新x的取值,如果要实现该效果,可以将代码调整为:
x = 1 for i in range(3): print(x * i)
如果你的需求确实需要累积更新x的取值,建议将range(3)改为range(1,4)避免第一次乘0导致后续所有计算结果都为0。
内容的提问来源于stack exchange,提问作者mohsin khan
相关产品推荐
相关产品推荐

