Python嵌套循环代码输出与预期不符,请求解释背后逻辑
关于Python嵌套循环中
continue语句的逻辑疑问 我来帮你理清这段代码的逻辑问题,你误解了continue语句的作用啦!
首先看你运行的代码:
first = [2, 4, 6] second = [2, 4, 6] for i in first: for j in second: if i == j: continue print(i, '*', j, '= ', i * j)
这段代码的实际输出是:
2 * 4 = 8 2 * 6 = 12 4 * 2 = 8 4 * 6 = 24 6 * 2 = 12 6 * 4 = 24
而你预期的是2*2=4 , 4*4=16 , 6*6=36,问题出在对continue的理解上:
continue的作用是跳过当前循环的剩余语句,直接进入下一次循环迭代。在这里,它针对的是内层的for j in second循环。- 当
i == j时,程序执行continue,会直接跳过下面的print语句,去取下一个j的值,所以相等的情况被完全跳过,根本不会被打印出来。
如果想要得到你预期的输出,逻辑需要反过来:当i == j时执行打印操作,而不是跳过。修改后的代码可以是这样:
first = [2, 4, 6] second = [2, 4, 6] for i in first: for j in second: if i == j: print(i, '*', j, '= ', i * j)
或者更高效的写法(因为两个列表完全相同,不需要嵌套循环):
nums = [2, 4, 6] for num in nums: print(f"{num} * {num} = {num * num}")
运行后就能得到你想要的输出:
2 * 2 = 4 4 * 4 = 16 6 * 6 = 36
内容的提问来源于stack exchange,提问作者Eren Kızıldağ
相关产品推荐
相关产品推荐

