This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author 1071754
Recipients 1071754, terry.reedy
Date 2022-01-16.20:12:33
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1642363953.27.0.162668544419.issue46403@roundup.psfhosted.org>
In-reply-to
Content
Here is my code:
import random
def drawBoard(board):
    print(board[7] + '|' + board[8] + '|' + board[9])
    print('-+-+-')
    print(board[4] + '|' + board[5] + '|' + board[6])
    print('-+-+-')
    print(board[1] + '|' + board[2] + '|' + board[3])

def inputPlayerLetter():
    letter=''
    while not (letter=="X" or letter=="O"):
        print('Do you want to be X or O?')
        letter=input.upper()
        if letter =='X':
            return['X','O']
        else:
            return['O','X']

def whoGoesFirst():
    if random.randint(0,1) == 0:
        return 'computer'
    else:
        return 'player'

def makeMove(board,letter,move):
    board[move]=letter

def isWinner(bo,le):
     return ((bo[7] == le and bo[8] == le and bo[9] == le) or
            ((bo[4] == le and bo[5] == le and bo[6] == le) or
            ((bo[1] == le and bo[2] == le and bo[3] == le) or
            ((bo[7] == le and bo[4] == le and bo[1] == le) or
            ((bo[8] == le and bo[5] == le and bo[2] == le) or
            ((bo[9] == le and bo[6] == le and bo[3] == le) or
            ((bo[7] == le and bo[5] == le and bo[3] == le) or
            ((bo[9] == le and bo[5] == le and bo[1] == le))
def getBoardCopy(board):
    boardCopy=[]
    for i in board:
        boardCopy.append(i)
    return boardCopy

def isSpaceFree(board,move):
    return board[move] == ''

def getPlayerMove(board):
    move=''
    while move not in '1 2 3 4 5 6 7 8 9'.split() or not
      isSpaceFree(board,int(move)):
        print('What is your next move? (1-9)')
        move=input()
    return int(move)

def chooseRandomMoveFromList(board,movesList):
    possibleMoves=[]
    for i in movesList:
        if isSpaceFree(board,i):
            possibleMoves.append(i)

    if len(possibleMoves) != 0:
        return random.choice(possibleMoves)
    else:
        return None

def getComputerMove(board,computerLetter):
    if computerLetter=='X':
        playerLetter=='O'
    else:
        playerLetter=='X'

    for i in range(1,10):
        boardCopy=getBoardCopy(board)
        if isSpaceFree(boardCopy,i):
            makeMove(boardCopy,computerLetter,i)
            if isWinner(boardCopy,playerLetter):
                return i

    move=chooseRandomMoveFromList(board, [1,3,7,9])
    if move!=None:
        return move

    if isSpaceFree(board,5):
        return 5

    return chooseRandomMoveFromList(board, [2,4,6,8])

def isBoardFull(board):
    for i in range(1,10):
        if isSpaceFree(board,i):
            return False 
        for i in range(1,10):
            if isSpaceFree(board,i):
                return False
        return True
    print('Welcome to Tic-Tac-Toe')

while True:
    theBoard=[''] * 10
    playerLetter, computerLetter=inputPlayerLetter()
    turn=whoGoesFirst()
    print('The ' + turn + ' will go first.')
    gameIsPlaying=True

    while gameIsPlaying:
        if turn=='player':
            drawBoard(theBoard)
            move=getPlayerMove(theBoard)
            makeMove(theBoard,playerLetter,move)

            if isWinner(theBoard,playerLetter):
                drawBoard(theBoard)
                print('Hooray! You have won the game!')
                gameIsPlaying=False
            else:
                if isBoardFull(theBoard):
                    drawBoard(theBoard)
                    print('The game is a tie!')
                    break
                else:
                    turn='computer'

    else:
        move=getComputerMove(theBoard, computerLetter)
        makeMove(theBoard,computerLetter,move)

        if isWinner(theBoard,computerLetter):
            drawBoard(theBoard)
            print('The computer has beat you! You lose.')
            gameIsPlaying=False
        else:
            if isBoardFull(theBoard):
                drawBoard(theBoard)
                print('The game is a tie!')
                break
            else:
                turn='player'
    print('Do you want to play again! (yes or no)')
    if not input().lower().startswith('y'):
        break
On def getBoardCopy(board):, it says "SyntaxError:invalid syntax". I looked through the code and found nothing wrong. Why is this?
History
Date User Action Args
2022-01-16 20:12:331071754setrecipients: + 1071754, terry.reedy
2022-01-16 20:12:331071754setmessageid: <1642363953.27.0.162668544419.issue46403@roundup.psfhosted.org>
2022-01-16 20:12:331071754linkissue46403 messages
2022-01-16 20:12:331071754create