Python Forum

Full Version: Dictionary and List
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
new_row1 = [' ', '|', ' ', '|', ' ']
new_row2 = [' ', '|', ' ', '|', ' ']
new_row3 = [' ', '|', ' ', '|', ' ']

def displayBoard(row1, row2, row3, playerMarker, comMarker, whoseTurn, move):
    rowChoice = {7: row1[0], 8: row1[2], 9: row1[4],
                 4: row2[0], 5: row2[2], 6: row2[4],
                 1: row3[0], 2: row3[2], 3: row3[4], 10: row1[1]}
    if whoseTurn == 1: #1 for player, 0 for computer
        rowChoice[move] = playerMarker #say playerMarker = 'X'
        print ("rowChoice[move] is ", rowChoice[move]) #for checking
        whoseTurn -= 1
    elif whoseTurn == 0:
        rowChoice[move] = comMarker
        print ("Com's turn")
        whoseTurn += 1
    print (''.join(row1))
    print ("-+-+-")
    print (''.join(row2))
    print ("-+-+-")
    print (''.join(row3))
    return row1, row2, row3, whoseTurn

row1, row2, row3, playerTurn = displayBoard (new_row1, new_row2, new_row3, playerMarker,
                                                 comMarker, playerTurn, move)
Hi guys,

Am trying to put the lists row1 as the values of a dictionary rowChoice,
for example playerMarker is 'X' and move is '7', am trying to pass the value of playerMarker -> rowChoice[7] (rowChoice[move]) -> row1[0] -> row1.

I am able to assign rowChoice[7] the value, but not row1[0] and row1. Please assist. Thanks
I don't understand what you are trying to do. At all. The usual way to use a dictionary for a tic tac toe game is to number the squares from zero through 8, or 1 through 9, so those are the keys of a dictionary. The user selects a square number and the dictionary is updated with an X or O for that key (square number) . You can then check squares 1 ,2, 3 (and all of the other winning combinations) to see if they are all equal.
.
new_row1 = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']

def displayBoard(row1, playerMarker, comMarker, whoseTurn, move):

    if whoseTurn == 1: #1 for player, 0 for computer
        print ("Player making move at ", (move))
        row1[(move-1)] = playerMarker
        whoseTurn -= 1
    elif whoseTurn == 0:
        print ("Computer making move at ", (move-1))
        row1[(move-1)] = comMarker
        whoseTurn += 1
    print (row1[6] + '|' + row1[7] + '|' + row1[8])
    print ("-+-+-")
    print (row1[3] + '|' + row1[4] + '|' + row1[5])
    print ("-+-+-")
    print (row1[0] + '|' + row1[1] + '|' + row1[2])
    return row1, whoseTurn

def playersTurn(row1):
    while True:
        print ("What is your next move? (1-9)")
        move = int(input())
        if row1[(move-1)] != ' ':
            print ("The move has been occupied")
        elif move in range (1,10):
            return move
        else:
            print ("Please key in 1-9 in numeric value only.")

while True:
    move = playersTurn(new_row1)
    row1, playerTurn = displayBoard (new_row1, playerMarker, comMarker, playerTurn, move)
Hi, I managed to achieve what I intend to do with the code as shown above. However, I am wondering if I could achieve the same function using dictionary
    rowChoice = {7: row1[0], 8: row1[2], 9: row1[4],
                 4: row2[0], 5: row2[2], 6: row2[4],
                 1: row3[0], 2: row3[2], 3: row3[4], 10: row1[1]}