我正在研究一个打印出步骤并使用while循环遇到一个奇怪问题的程序。由于某种原因,循环从1开始而不是0,我无法确定为什么它是完全正确的。
当前输出:
Array Rows: 5
Array Columns: 5
_ _ _ _ _
X _ _ _ _
X X _ _ _
X X X _ _
X X X X _
期望的输出:
Array Rows: 5
Array Columns: 5
X _ _ _ _
X X _ _ _
X X X _ _
X X X X _
X X X X X
功能代码:
if(rows == columns):
x = 0
while(x < rows):
y = 0
while(y < x):
array[x][y] = "X"
y += 1
x += 1
注意:行和列是主程序的用户输入,用于指定2D列表的大小。
以下是带有调试打印的输出,显示问题:
Array Rows: 5
Array Columns: 5
1
2
2
3
3
3
4
4
4
4
_ _ _ _ _
X _ _ _ _
X X _ _ _
X X X _ _
X X X X _
注意:此输出中的更改是第二个嵌套while循环中的“x”的打印语句。
任何帮助都会非常感激,因为我花了很多时间试图弄清楚什么是错的,没有任何运气:/
答案 0 :(得分:1)
当前代码中,行0中有0个X,行1中有1个X等。那是因为在第0行,内部while
循环迭代0次,因为初始测试x < y
在循环开始之前失败。 0
不低于0
。
也许您希望内部y <= x
循环中有while
?
答案 1 :(得分:1)
您可能想要测试y <= x
是否与对角线一样,您的行号等于到您的列号。
if rows == columns:
x = 0
while x < rows:
y = 0
while y <= x:
array[x][y] = "X"
y += 1
x += 1
只是一个提示:你可以使用for
循环来使这更简单:
if rows == columns:
for x in range(0, rows):
for y in range(0, x + 1):
array[x][y] = "X"