首页 > 解决方案 > 井字游戏功能未正确定义变量

问题描述

我正在构建一个井字游戏,作为我在 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()

标签: pythontic-tac-toe

解决方案


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

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 作用域的信息


推荐阅读