查找数组中大于10的数字的Python算法返回错误结果,问题出在哪里?
错误原因
- 函数返回值不对:你写的
findLargestNumberinArray函数中,符合条件时返回的是下标i,不是下标对应的数组元素arr[i]。示例数组中第一个大于10的元素是27,对应下标为3,因此函数返回3。 - 输出逻辑额外做了加1操作:你在打印时对返回的下标执行了
result +1,3加1得到4,就是你现在看到的输出结果。
修复代码
如果你需要返回第一个大于10的元素值,可以修改为如下代码:
def findFirstNumberGreaterThan10(arr): for num in arr: if num > 10: return num return -1 arr = [1, 9, 3, 27, 0.5, 4, 16, 2] result = findFirstNumberGreaterThan10(arr) if result != -1: print("Number is : " + str(result)) else: print("No Number!")
运行后输出为:
Number is : 27
如果你需要找出所有大于10的元素并打印,可以修改为如下代码:
def findAllNumbersGreaterThan10(arr): res = [] for num in arr: if num > 10: res.append(num) return res arr = [1, 9, 3, 27, 0.5, 4, 16, 2] result = findAllNumbersGreaterThan10(arr) if result: print("Numbers are : " + str(result)) else: print("No Number!")
运行后输出为:
Numbers are : [27, 16]
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

