值为while循环的奇怪问题?

时间:2013-11-23 05:05:18

标签: python list while-loop

我正在研究一个打印出步骤并使用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”的打印语句。

任何帮助都会非常感激,因为我花了很多时间试图弄清楚什么是错的,没有任何运气:/

2 个答案:

答案 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"