2013-10-30 20 views
0

tic tac脚趾问题。我的Tic tac脚趾不工作

a=0 
def runx(): 
    answer = int(input("answer:")) 
    if answer == 1: 
     if a==1 or a==2: 
      print("nope") 
     if a==0: 
      mlabel=Label(mGui,text="x").grid(row=1,column=1) 
      a=1 

所以runx正在检查,看看你想放置x的板上。答案是你想要的地方的变量。 “a”是要看它是否被占领以及它占据了什么。 0 =无,1 = X 2 = O。当我运行它说:

“(a)参考之前的参考”。

+2

'A = ...'在Python函数的任何位置声明'了'作为一个地方,除非你使用'global'或'nonlocal' – Eevee

+0

您的tictactoe板只有一个单元格吗?可能'a'应该是列表(或字典)的列表。然后,你只需要改变它,所以不需要'全球'那里 –

回答

2

您正在尝试写入全局变量。那么,你应该把global a这个词放在函数中。像这样:

a=0 
def runx(): 
    global a 
    answer = int(input("answer:")) 
    if answer == 1: 
     if a==1 or a==2: 
      print("nope") 
     if a==0: 
      mlabel=Label(mGui,text="x").grid(row=1,column=1) 
      a=1 

我想提一提,只要你不声明局部变量,你总是可以从函数读取它,但不能写,除非你把global关键字。

+0

谢谢你这么多!它的工作完美:) – user2912093

+1

@ user2912093你可能想勾选我的答案,所以其他用户遇到问题将知道答案。 – Nirock

0

你正在定义a以外的函数,所以要么在函数内部使用global a来告诉Python它是一个全局变量,要么在函数内部移动声明。

1

对于小板它的方便,以保持状态,在由于dictdict

a = {} 
def runx(): 
    answer = int(input("answer:")) 
    row, column = divmod(answer, 3) 
    if (row, column) in a: 
     print("nope") 
    else: 
     mlabel=Label(mGui, text="x").grid(row=row, column=column) 
     a[row, column] = 1 

是可变的有没有问题更新它的功能

这里面是divmod如何可以用来映射从0-8号到行/列

>>> for answer in range(0, 9): 
...  print divmod(answer, 3) 
... 
(0, 0) 
(0, 1) 
(0, 2) 
(1, 0) 
(1, 1) 
(1, 2) 
(2, 0) 
(2, 1) 
(2, 2)