嵌套的while循环中不需要的输出

时间:2019-09-22 07:21:53

标签: python while-loop nested

我的提示:“编写一个程序,该程序使用两个嵌套的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。

2 个答案:

答案 0 :(得分:1)

您的if条件应仅在不相等时才更改为打印(i, j)

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开始迭代,因为这对我来说看起来更好一些。

P.S。,更惯用的方法是使用列表理解。

[(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)]

答案 1 :(得分:0)

这是因为在rowcol都等于3的情况下,您将col增加到4,然后打印。修改为:

row = 0
while row < 3:
    col = 0
    row += 1
    while col < 3:
        col += 1
        if row != col:
            print (row, col)
相关问题