为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Cats萌萌 2021-04-09 14:11:27
我一直在尝试制作井字游戏,到目前为止,我只创建了一个应该打印出棋盘的功能:    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
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

这里有一些问题:


如果你迭代一个列表,你遍历元素列表中,未对指标; 和

如果查询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(..)。


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号