如何在Python中检查2D数组中元素的类型

我一直在尝试制作井字游戏,到目前为止,我只创建了一个应该打印出棋盘的功能:


    board = [[1,2,3],[4,5,6],[7,8,9]]


    def drawboard(board):

        for row in board:

            for item in row:

                if type(board[row][item]) == "int":

                    print(str(board[row][item]))

                    print("|")

                else:

                    print(board[row][item])

                    print("|")

            print("\n")

            print("------")

            print("\n")


    drawboard(board)

如您所见,函数的一部分是检查列表内部列表中元素的类型,但这给了我一个错误:


回溯(最近一次通话最后一次):文件“ / Users / Tony / Desktop / coding Things / tic TAC toe.py”,第22行,位于画板(board)\ File“ / Users / Tony / Desktop / coding Things / tic TAC toe.py“,第12行,如果type(board [row] [item])==” list“,则在画板中:TypeError:列表索引必须是整数或切片,而不是list


Cats萌萌
浏览 210回答 2
2回答

桃花长相依

这里有一些问题:如果你迭代一个列表,你遍历元素列表中,未对指标; 和如果查询type(..)你就不会得到一个字符串作为回报元素,但对类的引用。因此,您可以像这样解决此问题:    board = [[1,2,3],[4,5,6],[7,8,9]]    def drawboard(board):        for row in board:            for item in row:                if type(item) == int:                    print(str(item))                    print("|")                else:                    print(item)                    print("|")            print("\n")            print("------")            print("\n")    drawboard(board)由于非str项目通常str(..)在调用print时为-ed,因此我们甚至可以将ifandelse分支合并为:def drawboard(board):    for row in board:        for item in row:            print(item)            print("|")        print("\n")        print("------")        print("\n")drawboard(board)如果继续进行这种类型检查,通常检查类型相等性也不是一个好主意。由于如果元素是子类的,则类型不再是int。然后,您最好使用isinstance(..)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python