Python二维数组特定值查找:首尾行零值定位失败求助
问题分析与修复方案
核心问题:数据类型不匹配
你读取二维数组时,所有元素都是字符串类型(比如"0"、"1"),但查找时用的是整数0进行比较,导致条件a[9][i] == 0永远不成立,变量start和end自然不会更新。另外,读取文件时用line.split(' ')可能会产生空字符串(比如行尾空格分割后),需要过滤掉无效元素。
修复步骤
1. 修正数组读取代码
将读取到的字符串元素转为整数,并过滤空元素:
a = [] # 先初始化数组a with open("maze_10x10.txt") as maze: for line in maze: # 过滤空元素并转成整数 row = [int(item.strip()) for item in line.split(' ') if item.strip()] a.append(row)
2. 修正查找逻辑代码
遍历行的列数时,用该行的长度更严谨(避免数组非方阵的情况):
start = (9, 0) end = (0, 0) # 查找末行的0 for i in range(len(a[9])): if a[9][i] == 0: start = (9, i) print(start) # 输出 (9, 1) # 查找首行的0 for i in range(len(a[0])): if a[0][i] == 0: end = (0, i) print(end) # 输出 (0, 7)
验证结果
运行修正后的代码,就能正确找到首行和末行中0的坐标:
- 末行(第9行)的0在第1列,坐标
(9,1) - 首行(第0行)的0在第7列,坐标
(0,7)
内容的提问来源于stack exchange,提问作者Noah
相关产品推荐
相关产品推荐

