为什么我得到变量未定义错误?

2024-09-30 00:36:30 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的代码

n = int(input("please enter a value: "))
board = []

def make_board(n):
    global board
    max = n * n #the number of tiles in the board
    count = 1 #a counter to change the value assigned to each tile
    for i in range(n):
        board.append([]) #appends a list inside the list of board.  Essentially creates a row which is of type list.
        for j in range(n): 
            num = max - count 
            if num == 0: #the 0 tile will display like a blank space
                tile = '  '
            elif num < 10: #adds a space to tile values less than 10 for formatting.
                tile = ' ' + str(num)
            else:
                tile = str(num) 
            board[i].append(tile) #appends a tile value to each row, n number of times.
            count += 1

    if n%2 == 0:
        tempvara = board[n-1][n-2]
        tempvarb = board[n-1][n-3]
        board[n-1][n-2]=tempvarb
        board[n-1][n-3]=tempvara
    #TODO
    for row in board:
        print(' '.join(row))

def find_blank(board):
    global counterUNO
    global counterDOS
    global counterTRES
    counterTRES = 0

    #TODO
    for i in range(n):
            tempvari = board[i]
            if '  ' in tempvari:
                counterUNO = i
                for z in board[counterUNO]:
                    counterTRES = counterTRES + 1
                    if '  ' in z:
                        counterDOS = counterTRES-1
                        break

    tupleone = (counterUNO,counterDOS)
    return(tupleone)

def find_tile(f):
    counterfour = 0
    tiles = str(input("tile BUBBER"))

    if int(tiles)<10:
        tiles = " "+tiles

    counterfive = 0
    countersixe = 0
    countersixe = 0

    for i in range(n):
        chopstick = board[i]
        if tiles in chopstick:
            counterfour = i
            for z in board[counterfour]:
                countersixe = countersixe + 1
                if tiles in z:
                    counterfive = countersixe-1
                    break

    tupleDOS = (counterfour,counterfive)
    return(tupleDOS)

def find_next_to_blank(board):
    #print("here is the shit")
    #print(find_tile(board))
    vara  = find_tile(board) #sets tile numb tuple to vara
    varb  = find_blank(board) #yeah
    varc  = int(tiles)
    varaa = int(tiles[0])
    varab = int(tiles[1])
    varba = board[varaa+1][varab]
    varbb = board[varaa][varab+1]
    varbc = board[varaa-1][varab]
    varbd = board[varaa][varab-1]
    varbe = board[varaa+1][varab+1]
    varbf = board[varaa-1][varab-1]

make_board(n)    
#find_blank(board)            
#find_tile(board)
find_next_to_blank(board)

问题:

现在我正在尝试制作一个python Tile游戏,在那里我可以移动数字。makeboard函数显然创建了一个board,我这样做是为了在一个大列表中有三个列表,在这三个列表中有元素

find blank函数用于标识板中不存在部分的坐标

find tile函数是一个函数,用户输入一个值,代码识别我们想要的tile的坐标

所以现在我得到了一个错误,因为当我运行find next to blank函数(该函数应该识别用户想要输入的值旁边是否有一个空白点)时,我得到了以下错误

Traceback (most recent call last):
  File "python", line 149, in <module>
  File "python", line 122, in find_next_to_blank
NameError: name 'tiles' is not defined

我试着把“tiles”变量变成一个全局变量,但根本不起作用


Tags: theto函数inboardforiffind
1条回答
网友
1楼 · 发布于 2024-09-30 00:36:30

变量tiles未在find_next_to_blank(board)中定义。如果我不这么说的话,我就是失职了:考虑重组你的程序以避免使用全局变量。

现在,如果你让tiles成为全局的,那么它应该可以工作。你知道吗

相关问题 更多 >

    热门问题