Python - 接收TypeError

时间:2015-05-13 03:35:41

标签: python-3.x

所以下面的代码:
取一个给定的正方形,如果它是一个X什么都不做。如果正方形中有一个O,它会将O更改为X并自动填充上方,下方,左侧和右侧的方块。

#openFile(filename): This function opens and prints the users txt file for paint
#input: none
#output: The file that needs to be painted 
def openFile(filename):

    file = open(filename, 'r')

    for line in file:

        print(line)

    file.close()


#convertFile(filename): This function is used to convert the .txt file into a 2D arrary
#input: none
#output: none
def convertFile(filename):

     empty = []


    filename = open(filename, 'r')


    for line in filename:

        line = line.rstrip("\n")

        empty.append(list(line))

    return empty


#getCoordinates(x,y): This function is used to get the coordinates the user wants to pain from
#input: user coordinates.
#output: none
def getCoordinates(x, y):

    coordinates = []

    userInt = 0

    user = []

    try:

        user = input("Please enter a square to fill , or q to exit: ")

        user.split()

        coordinates.append(int(user[0]))
        coordinates.append(int(user[2]))

    except ValueError:

        print("Enter a valid input!")

        user = input("Please enter a square to fill, or q to exit: ")

        user.split()

        coordinates.append(int(user[0]))
        coordinates.append(int(user[2]))

    return coordinates



def printGrid(grid):

    for innerList in grid:
        for item in innerList:
            print(item, end = "")
        print()




#autoFill(board, row, col): This is the heart of the program and the recursive program
# use to fill the board with x's
#input: none
#output: none
def autoFill(grid, rows, cols):
    if grid[cols][rows] == "X":
        return 0
    else:
        grid[cols][rows] = "X"
        if rows > 0:
            autoFill(grid, rows - 1, cols)

        if rows < len(grid[cols]) - 1:
            autoFill(grid, rows + 1, cols)

        if cols > 0:
            autoFill(grid, rows, cols - 1)

        if cols < len(grid) - 1:
            autoFill(grid, rows, cols + 1)







def main():



    coordinates = [] 

    empty = []

    while True:

        filename = input("Please enter a filename: ")

        openFile(filename)

        empty = convertFile(filename)


        coordinates = getCoordinates(len(empty), len(empty[0]))

        empty = autoFill(empty(coordinates[0], coordinates[1]))



        for item in empty:

            s = ""
            s.join(item)

            for x in item:

                s += str(x)
            print(s)


    if user == "q":

        return 0



main()

输出应如下所示:

Please enter a filename: input.txt
OOOOOOXOOOO
OOOOOXOOOOO
OOOOXOOOOOO
XXOOXOOOOOO
XXXXOOOOOOO
OOOOOOOOOOO
Please enter a square to fill, or q to exit: 1, 1
XXXXXXXOOOO
XXXXXXOOOOO
XXXXXOOOOOO
XXXXXOOOOOO
XXXXOOOOOOO
OOOOOOOOOOO

但是当我输入坐标点时,我得到:

empty = autoFill(empty(coordinates[0], coordinates[1]))
TypeError: 'list' object is not callable

非常感谢任何解决此问题的指导

1 个答案:

答案 0 :(得分:0)

您正在询问的特定错误正在发生,因为您正在尝试拨打emptylist返回的convertFile),就好像这是一个功能。