Removing trailing whitespace for a tic tac toe board in python

Question:

I am trying to resolve the error as highlighted in the picture below. I am able to print a tic-tac-toe board but the trailing whitespace affects the test case. I am not better yet at using strings to represent a list of numbers. The desired output is embedded in the image below:
test case error

def printBoard(plane):#function to print out the current board
    for w in range(len(plane)):
        for e in range(len(plane)):
            if plane[w][e]== 1:
                print('{:^3}'.format('X'), end="")
            elif plane[w][e] == -1:
                print('{:^3}'.format('O'), end="")
            elif plane[w][e] == 0:
                print('{:^3d}'.format((len(plane)*w+e)), end="")
        print()
Asked By: Frankline Misango

||

Answers:

I believe you are looking to right justify the numbers while also enforcing 3 characters of width so your printed board retains its formatting. To do this, you can eliminate the caret character from your print statements, which will allow the printed values to right justify. The caret signifies that you are centering the text, which will cause it to leave trailing character(s). This should eliminate your trailing whitespace:

print('{:3d}'.format((len(plane)*w+e)), end="")
Answered By: Chris Lindseth

This will do want you want. Changed end to vary if it was the end of a line and used periods(.) to make the spaces visible for demonstration. Refactored a bit to remove redundant code:

def printBoard(plane):
    i=0
    for values in plane:
        for col,value in enumerate(values):
            text = ' X' if value==1 else ' O' if value==-1 else f'{i:2d}'
            print(text, end='n' if col==len(values)-1 else '.')
            i += 1

plane = [[0]*6 for _ in range(6)]
printBoard(plane)
plane[1][1] = 1
plane[1][5] = 1
plane[2][2] = -1
plane[2][5] = -1
print()
printBoard(plane)

Output:

 0. 1. 2. 3. 4. 5
 6. 7. 8. 9.10.11
12.13.14.15.16.17
18.19.20.21.22.23
24.25.26.27.28.29
30.31.32.33.34.35

 0. 1. 2. 3. 4. 5
 6. X. 8. 9.10. X
12.13. O.15.16. O
18.19.20.21.22.23
24.25.26.27.28.29
30.31.32.33.34.35
Answered By: Mark Tolonen