【问题标题】:Strange issue with values a while loop?一个while循环的值的奇怪问题?
【发布时间】:2013-11-23 05:05:17
【问题描述】:

我正在开发一个程序,该程序打印出步骤并在 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”打印语句。

任何帮助将不胜感激,因为我花了很多时间试图找出问题所在,但没有任何运气:/

【问题讨论】:

  • 你能显示完整的代码吗?行、列、数组声明。

标签: python list while-loop


【解决方案1】:

您当前的代码将在第 0 行有 0 个 X,在第 1 行有 1 个 X,依此类推。这是因为在第 0 行,内部 while 循环迭代 0 次,因为初始测试 x &lt; y 在循环开始之前失败。 0不小于0。

也许您希望 y &lt;= x 在您的内部 while 循环中?

【讨论】:

  • 啊,这就是问题所在。谢谢!
【解决方案2】:

您可能想测试y &lt;= 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多