我的调试脚本有一个问题,它只返回 4, 1 的输出,应该是 4, 3, 2, 1。
我有点困惑,因为我认为 ReverseStart 仍然会给出 4, 3, 2, 1 的输出。
感谢您的阅读 - 这是我的脚本
list1 = [1,2,3,4] def reverseStart(listA): itemA = listA.pop() listB=[] listB.append(itemA) for item in listA: listB.append(item) return listB print(reverseStart(list1))
• Python 调试首先将第 1 行识别为 listA 的函数,将 1,2,3,4 的序列单独定义为一个函数 • Python 调试识别的下一步是为 listA 的函数定义 ReverseStart,其中包括:
我已经运行了调试器,只是对它为什么返回 4, 1 感到困惑。
在你的代码中,问题出现在 return 语句的位置。你的 return 语句应该在 for 循环之后,而不是在循环的内部。这是因为当前的代码在第一次迭代时就会执行 return,因此只返回了列表中的第一个元素。
return
for
下面是修正后的代码:
def reverseStart(listA): itemA = listA.pop() listB = [] listB.append(itemA) for item in listA: listB.append(item) return listB list1 = [1, 2, 3, 4] print(reverseStart(list1))
在修正后的代码中,return 语句位于 for 循环之后,确保所有元素都被添加到 listB 中后再返回。现在,你应该能够得到正确的输出 [4, 3, 2, 1]。
listB
[4, 3, 2, 1]