Python二维数组元素搜索方法及代码运行异常排查
问题原因
你代码的逻辑错误出在返回值的缩进位置:
- 当前你把
return 'The element has not been found.'放在了内层for循环的if分支同级的else里,这就导致代码只会检查二维数组的第一个元素[0][0]:如果第一个元素匹配就返回位置,只要第一个元素不匹配,立刻直接返回未找到,根本不会遍历剩下的元素。 - 正确逻辑应该是遍历完全部元素之后,如果还没有匹配到值,再返回未找到的提示。
修正后的代码
import numpy as np # 原代码运行需要先导入numpy,注意补全 twoDArray = np.array([[11, 15,10, 6], [10, 14, 11, 5], [12, 17, 12, 8], [15, 18, 14, 9]]) print(twoDArray) def searchTDArray(array, value): for i in range(len(array)): # 遍历所有行 for j in range(len(array[0])): # 遍历当前行的所有列 if array[i][j] == value: return f'该值的位置是索引[{i}][{j}]' # 所有循环执行完毕仍未返回,说明不存在对应值 return '未找到该元素' print(searchTDArray(twoDArray, 11)) print(searchTDArray(twoDArray, 14)) # 测试其他存在的值,会正常返回位置[1][1]
补充说明
你提到和讲师代码一致但运行结果不同,大概率是你抄写代码时把未找到的返回语句的缩进写错了,缩进在Python中属于语法的一部分,会直接影响逻辑执行顺序,编写时需要格外注意。
内容的提问来源于stack exchange,提问作者Helen
相关产品推荐
相关产品推荐

