Python def结束时重置变量
我几天前才开始学习Python,但我决定通过制作一个简单的Xo游戏来测试我的技能,下面是我迄今为止编写的代码。 希望它不需要解释。但基本上,在一个函数结束并转到另一个函数后,数字会重置,因此,当玩家一输入“1”,X被置于位置1,然后玩家二输入“2”,O被置于位置2时,玩家一输入的X会回到“1”。 我该如何解决这个问题Python def结束时重置变量,python,Python,我几天前才开始学习Python,但我决定通过制作一个简单的Xo游戏来测试我的技能,下面是我迄今为止编写的代码。 希望它不需要解释。但基本上,在一个函数结束并转到另一个函数后,数字会重置,因此,当玩家一输入“1”,X被置于位置1,然后玩家二输入“2”,O被置于位置2时,玩家一输入的X会回到“1”。 我该如何解决这个问题 grid=" %s | %s | %s \n --+---+--\n %s | %s | %s\n --+---+--\n %s | %s | %s" one = "1" t
grid=" %s | %s | %s \n --+---+--\n %s | %s | %s\n --+---+--\n %s | %s | %s"
one = "1"
two = "2"
three = "3"
four = "4"
five = "5"
six = "6"
seven = "7"
eight = "8"
nine = "9"
error = "\n error"
print grid % (one, two, three, four, five, six, seven, eight, nine)
def pleone(m, one, two, three, four, five, six, seven, eight, nine):
if m == "1":
one = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "2":
two = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "3":
three = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "4":
four = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "5":
five = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "6":
six = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "7":
seven = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "8":
eight = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
elif m == "9":
nine = "X"
print grid % (one, two, three, four, five, six, seven, eight, nine)
pltwo()
else:
print error
def pletwo(k, one, two, three, four, five, six, seven, eight, nine):
if k == "1":
one = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "2":
two = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "3":
three = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "4":
four = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "5":
five = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "6":
six = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "7":
seven = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif K == "8":
eight = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
elif k == "9":
nine = "O"
print grid % (one, two, three, four, five, six, seven, eight, nine)
plone()
else:
print error
def plone():
m = raw_input("\n player one (X), what position? ")
pleone(m, one, two, three, four, five, six, seven, eight, nine)
def pltwo():
k = raw_input("\n player two (O), what position? ")
pletwo(k, one, two, three, four, five, six, seven, eight, nine)
plone()
我留下了你的代码,但你可以美化它 更改回“1”的原因是pleone和PLETOW函数外部的“1”与函数内部的“1”不同 外部的“一”具有全局作用域,而函数内部的“一”具有局部作用域,这意味着它们仅在函数内部有效 您需要将函数中的变量声明为全局变量才能对其进行更改 以下示例显示了如何修复此问题:
g_var = '1'
l_var = '1'
print g_var, l_var # prints 1, 1, the values of the global variables
def my_func():
global g_var # the keyword global tells that we want to change the global variable g_var
g_var = '2'
l_var = '2'
print g_var, l_var # prints 2, 2, the first being the value of the global variable, the second being the local declared variable l_var.
my_func()
print g_var, l_var # prints 2, 1, again the values of both global declared variables
我尝试在“one”变量前面添加global,但它只显示以下错误:global one=“X”^SyntaxError:invalid syntaxe您需要这样做:global one=“X”(每一个都在新行上)