我的提示:“编写一个程序,该程序使用两个嵌套的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。
答案 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)
这是因为在row
和col
都等于3的情况下,您将col
增加到4,然后打印。修改为:
row = 0
while row < 3:
col = 0
row += 1
while col < 3:
col += 1
if row != col:
print (row, col)