小能豆

初学者Python - 调试脚本用户错误

py

我的调试脚本有一个问题,它只返回 4, 1 的输出,应该是 4, 3, 2, 1。

  • itemA 被声明为删除并返回 listA
  • ListB 正在利用追加将单个项目添加到集合中
  • 一旦识别出已作为项目添加到集合中的 listB 项目,调试将返回 ListB

我有点困惑,因为我认为 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,其中包括:

  • itemA 被声明为删除并返回 listA
  • ListB 正在利用追加将单个项目添加到集合中
  • 一旦已识别出已作为项目添加到集合中的 listB 项目,调试将返回 ListB • Python 调试状态的下一步是打印reverseStart listA (1,2,3,4) • 下一步步骤 – Python 调试将 itemA 识别为值 1,2,3,4,结果为 4 • 下一步 Python 调试将 listB 识别为 4,因为 itemA 使用了追加函数 • 下一步 Python 调试包含 for 命令listA 中的项目(此时为 4)状态为 1,2,3,这导致 listA 更改为 1,2,3 • 下一步 Python 调试将 listB 识别为 4,如前所述,因此更改为 4,1由于 list.b 在 listA 中附加为“item”,在 1 处进行了说明 • 下一步 Python 调试将 listB 的返回函数识别为 4,1,从而打印出 4,1

我已经运行了调试器,只是对它为什么返回 4, 1 感到困惑。


阅读 47

收藏
2023-11-15

共1个答案

小能豆

在你的代码中,问题出现在 return 语句的位置。你的 return 语句应该在 for 循环之后,而不是在循环的内部。这是因为当前的代码在第一次迭代时就会执行 return,因此只返回了列表中的第一个元素。

下面是修正后的代码:

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]

2023-11-15