Python3 for循环索引未手动修改却输出异常,请问是什么原因?
问题原因分析
你贴出的代码本身逻辑完全正常,单独运行时print(i)的输出必然为0、1、2、3、4,不存在迭代变量异常跳转的问题,出现异常输出的核心原因是实际运行的代码与你贴出的代码不一致,常见有以下几种场景:
- 缩进错误:
print(i)被错误缩进放在了内层while循环中,或是你额外在内层循环中加了print(i)调用,导致同一个i值被多次打印,看起来就像是i的取值出现了回退。你可以检查你的代码缩进,确认print(i)是否只属于for循环的第一层作用域。 - 交互环境变量污染:如果你是在Python交互式解释器(REPL)中运行代码,之前执行的代码可能残留了同名变量
i,或是外层有其他未结束的循环逻辑,和当前代码的迭代变量冲突。 - 代码不全:你实际运行的代码包含其他未贴出的逻辑,比如外层嵌套了其他循环修改了
i的取值。
你可以把贴出的这段代码完整复制到独立的.py文件中执行,即可得到符合预期的输出。
内容的提问来源于stack exchange,提问作者Mohammad Mosiur
相关产品推荐
相关产品推荐

