Python嵌套for循环未输出全部预期结果,请求排查错误
问题排查与修复
你的问题核心是缩进错误,导致内层循环的K值只保留了最后一次的结果,才和D值配对输出。
错误原因分析
看你原代码的缩进结构:
def main(): for i in range(0,4): for j in range(0,4): if j==0: K=1000 elif j==1: K=2000 elif j==2: K=2500 else: K=4000 # 这里的代码在内层for j循环结束后才执行! if i==0: D=2 elif i==1: D=4 elif i==2: D=5.5 else: D=10 print("The year with depth",D,"and K as",K,"is",K*D) main()
内层的for j循环会把K依次赋值为1000、2000、2500、4000,但循环结束后K固定为最后一次的4000。然后才执行if i判断得到D,再print一次。所以外层for i循环4次,每次都只输出K=4000和对应的D,总共4组结果,完全没实现两两配对的逻辑。
修复后的代码
你需要把if i的判断和print语句缩进内层for j循环的内部(或者把D的判断提到外层循环,减少重复计算),这样每次j循环(每个K值)都会和当前的i对应的D值配对输出:
def main(): for i in range(0,4): # 先根据i确定当前的D值,每个i循环只计算一次,更高效 if i==0: D=2 elif i==1: D=4 elif i==2: D=5.5 else: D=10 for j in range(0,4): if j==0: K=1000 elif j==1: K=2000 elif j==2: K=2500 else: K=4000 # 每次j循环都输出当前K和D的组合 print("The year with depth",D,"and K as",K,"is",K*D) main()
修复效果
现在运行代码会输出16组结果,覆盖所有K值(1000、2000、2500、4000)和D值(2、4、5.5、10)的两两组合乘积,完全符合你的预期。
内容的提问来源于stack exchange,提问作者user130824
相关产品推荐
相关产品推荐

