0

I am working on a program that prints out steps and running into a strange problem with a while loop. For some reason the loop starts at 1 instead of 0 and I can't pinpoint why it is exactly.

Current Output:

Array Rows: 5
Array Columns: 5
_ _ _ _ _ 
X _ _ _ _ 
X X _ _ _ 
X X X _ _ 
X X X X _ 

Desired Output:

Array Rows: 5
Array Columns: 5
X _ _ _ _ 
X X _ _ _ 
X X X _ _ 
X X X X _ 
X X X X X

Code For Function:

if(rows == columns):
        x = 0
        while(x < rows):
            y = 0
            while(y < x):
                array[x][y] = "X"
                y += 1
            x += 1 

Note: The rows and columns are user inputs from the main program to specify how large the 2D list should be.

Here is the output with a debugging print showing the issue:

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 _ 

Note: The change in this output is a print statement of "x" in the 2nd nested while loop.

Any help would be greatly appreciated as I've spent a ton of time trying to figure out what is wrong without any luck :/

1
  • Can you show the complete code? Rows, columns, array declaration. Commented Nov 23, 2013 at 5:07

2 Answers 2

1

There will be 0 X's in row 0, 1 X in row 1, etc. with your current code. That's because on row 0, the inner while loop iterates 0 times, because the initial test x < y fails before the loop starts. 0 is not less than 0.

Perhaps you want y <= x in your inner while loop?

Sign up to request clarification or add additional context in comments.

1 Comment

Ah this was the problem. Thank you!
1

You probably want to test whether y <= x, as on the diagonal, your row number will be equal to your column number.

if rows == columns:
    x = 0
    while x < rows:
        y = 0
        while y <= x:
            array[x][y] = "X"
            y += 1
        x += 1

Just a hint: you could use a for loop to make this a bit simpler:

if rows == columns:
    for x in range(0, rows):
        for y in range(0, x + 1):
            array[x][y] = "X"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.