我正在构建一个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()
答案 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的更多信息