python - 井字游戏功能未正确定义变量
问题描述
我正在构建一个井字游戏,作为我在 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()
解决方案
您无法访问另一个函数的变量。(或者您必须将其定义为全局变量)
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 作用域的信息
推荐阅读
- javascript - typescript 中 getter 和 setter 的“计算属性名称”
- mongodb - MongoDB获取数组的值
- javascript - 滚动时如何在画布上继续绘图?
- visual-studio-code - 在 Visual Studio Code 中使用“type”:“lime”的任务有什么作用?
- scala - SparkML (Scala) 中的并行训练独立模型
- python - 什么是线性回归模型中的 r 平方?
- html - 为什么标题文本没有与其余内容水平对齐?
- python - Pytest - 无法访问导入的类的属性?
- javascript - 如何使用 Google Scripts 和 Google Sheets 执行笛卡尔连接?
- windows - 来自一个 FOR 循环的变量作为批量嵌套 FOR 循环的路径