Python3赋值嵌套列表时报str不支持项赋值的问题求助
问题修复方案
错误根因
你当前初始化得到的board是字符串组成的一维列表,board[guess_row]取到的是字符串对象,Python中字符串属于不可变对象,不支持直接修改指定索引位的字符,该规则在Python2、Python3中完全一致,你之前在Python2中可以正常运行,大概率是此前的初始化逻辑和当前给出的写法不同。
适配Python3的修改方法
仅需要调整初始化逻辑,将每一行从字符串改为可变的列表类型即可:
board = [] for i in range(5): board.append(["O"] * 5)
修改后board就变成了二维列表,board[guess_row]取到的是列表对象,支持直接修改指定位置的元素,执行board[guess_row][guess_col] = "X"不会再报错。
补充说明
如果需要按原格式打印棋盘,可以遍历每一行用join方法拼接成字符串输出:
for row in board: print(' '.join(row))
内容的提问来源于stack exchange,提问作者Hogu
相关产品推荐
相关产品推荐

