Python Drawing a tic tac toe board

Issue

I am trying to draw a fake 3×3 tic tac toe board. I am new to python and I don’t understand why this does not work. Help would be appreciated. Thanks!

def draw():
    for i in range(4):
        board = (" ___ " * 3)

    for i in board:
        ("|    " * 4).join(board)

    print(board)


draw()

EDIT:

Final code:

def draw():
    board = ''

    for i in range(-1,6):

        if i%2==0:
            board += '|      ' * 4
            board += '\n|      |      |      |'

        else:
            board += ' _____ ' * 3

        board += '\n'
    print (board)

draw()

output:

 _____  _____  _____ 
|      |      |      |      
|      |      |      |
 _____  _____  _____ 
|      |      |      |      
|      |      |      |
 _____  _____  _____ 
|      |      |      |      
|      |      |      |
 _____  _____  _____ 

Double Edit:

Another way:

def drawsmall():
    a = (' ___' *  3 )
    b = '   '.join('||||')
    print('\n'.join((a, b, a, b, a, b, a, )))

drawsmall()

output:

 ___ ___ ___
|   |   |   |
 ___ ___ ___
|   |   |   |
 ___ ___ ___
|   |   |   |
 ___ ___ ___

Solution

I found it easier to do this in one loop, printing a row of the board each iteration. You can alternate between vertical and horizontal bars by checking if the current iteration is an even or odd number using the % operator.

With strings you don’t need to use join — it can be more clear to append with the += operator.

def draw():
    # initialize an empty board
    board = ""

    # there are 5 rows in a standard tic-tac-toe board
    for i in range(5):
        # switch between printing vertical and horizontal bars
        if i%2 == 0:
            board += "|    " * 4
        else:
            board += " --- " * 3
        # don't forget to start a new line after each row using "\n"
        board += "\n"

    print(board)

draw()

Output:

|    |    |    |    
 ---  ---  --- 
|    |    |    |    
 ---  ---  --- 
|    |    |    |   

Answered By – Tom Sitter

Answer Checked By – Robin (AngularFixing Admin)

Leave a Reply

Your email address will not be published.