井字游戏功能未正确定义变量

时间:2020-10-20 16:02:09

标签: python tic-tac-toe

我正在构建一个Tic Tac Toe游戏,作为我正在学习Udemy的Python入门课程的练习。我现在建立了一系列功能,但无法让其中两个一起使用。当我运行这两个函数时,出现错误,提示first_player未定义。但是,在第一个函数中定义了first_player。有谁知道为什么Python无法识别第二个函数中的first_player

如果这些功能正常运行,我希望他/她想成为X或O的第一个玩家,然后让Python将X或O分配给玩家1和玩家1。

choose_first player()中,我尝试打印出first_player变量,它可以正确打印。

我正在使用的代码如下:

#Randomly chooses which player goes first.
def choose_first_player():
    import random
    first_player = (str(random.randint(1,2)))

    if first_player == '1':
        print("\nPlayer " +first_player+ " goes first.")
    if first_player == '2':
        print("\nPlayer " +first_player+ " goes first.")

choose_first_player()

#Asks first_player if they want to be X's or O's.
def player_input():

    marker = ''

    while marker != 'X' and marker != 'O':
        marker = input("\nPlayer" +first_player+ " , do you want to be X's or O's?  Please enter X or O: ").upper()

    player1 = marker

    if player1 == 'X':
        player2 = 'O'
    else:
        player2 = 'X'
        player1 = 'O'

    print("\nPlayer 1 is: " + player1)
    print("Player 2 is: " + player2)
    return(player1,player2)

player_input()

1 个答案:

答案 0 :(得分:1)

您无法访问其他函数的变量。 (或者您必须将其定义为全局变量)

choose_first_player可以返回first_player的值,然后可以将其传递给另一个函数。

做这样的事情:

def choose_first_player():
    ...
    return first_player

first_player = choose_first_player()

... 

def player_input(first_player):
  ...

player_input(first_player)

在这里您可以阅读有关python scopes的更多信息

相关问题