Python中如何用while循环逆序打印数组?代码仅输出13求修正
问题排查与修正:不使用reverse()逆序打印数组
你的代码只输出13,主要有两个核心错误:
- 循环逻辑完全搞反:你初始化
i为数组最后一个索引(6),但循环条件是i < len(arr)(7),还让i递增,这会导致循环很快结束;正确的逆序遍历应该是从后往前,用i >= 0作为循环条件,每次让i递减。 - return语句位置错误:你把
return(arr)放在了while循环内部,第一次循环执行完就直接返回函数了,所以只打印了第一个元素13就终止了。
另外,你的函数名是oddNumberReverse,但原数组全是奇数,所以奇数判断的条件可以保留;如果后续需要逆序打印所有元素,直接去掉if判断即可。
修正后的代码:
arr = [1, 3, 5, 7, 9, 11, 13] def reversePrint(arr): i = len(arr) - 1 # 从最后一个元素往前遍历,直到索引0 while i >= 0: # 保留奇数判断(如果需要打印所有元素可直接删除这行if) if arr[i] % 2 == 1: print(arr[i]) i -= 1 # 不需要返回数组的话可以去掉这行return return arr reversePrint(arr)
运行后会输出完整逆序:
13 11 9 7 5 3 1
内容的提问来源于stack exchange,提问作者chickenNugget
相关产品推荐
相关产品推荐

