首页 > 解决方案 > 嵌套while循环中不需要的输出

问题描述

我的提示:“编写一个程序,使用两个嵌套的 while 循环打印 3x3 网格(编号 1 到 3)的行和列,不包括沿对角线的单元格(即,行和列具有相同的值) . 程序输出的前三行应如下所示:

1 2
1 3
2 1

到目前为止,我已经很好地编码了它,但是我遇到了一个额外的不需要的输出。如何删除它?

row = 0
while row < 3:
    col = 0
    row += 1
    while col < 3:
        col += 1
        if row == col:
            col += 1
        print (row, col)

预期结果应该是:

  1 2  
  1 3
  2 1
  2 3
  3 1
  3 2

但也包括 3 4。

标签: pythonwhile-loopnested

解决方案


(i, j)只有当它们不相等时,您的 if 条件才应更改为打印。

i = 1 
while i < 4:
    j = 1
    while j < 4:
        if i != j:
            print(i, j)
        j += 1
    i += 1
# 1 2
# 1 3
# 2 1
# 2 3
# 3 1
# 3 2

此外,我已经从 1 而不是 0 开始迭代,因为这对我来说看起来更有条理。

PS,更惯用的方法是使用列表理解。

[(i, j) for i in range(1, 4) for j in range(1, 4) if i != j]
# [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

推荐阅读