You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python入门遇index未定义错误,求解答(附选择排序代码)

选择排序代码的“index未定义”错误分析及修正

错误原因

你写的print(' Resolving element[' , index , '] to ' , array)语句位于selection_sort函数外部,但index是函数内部for循环的局部变量——局部变量的作用域仅限定义它的函数内部,函数外部无法访问,因此运行时会抛出“index未定义”的错误。

另外你的选择排序逻辑也存在问题:每次在内层循环找到更小元素时就立刻交换,这不符合选择排序“先遍历找到最小值位置,再一次性交换”的核心逻辑,会导致排序结果错误。

修正后的代码

def selection_sort(array):
    for index in range(0, len(array) - 1):
        value = array[index]
        current = index
        # 遍历找到当前区间内最小值的位置
        for element in range(index + 1, len(array)):
            if array[element] < array[current]:
                current = element
        # 内层循环结束后,再交换当前位置与最小值位置的元素
        array[index] = array[current]
        array[current] = value
        # 将打印语句移至函数内部,合法访问index变量
        print('	Resolving element[' , index , '] to ' , array)

array = [5, 3, 1, 2, 6, 4]
print('Selection Sort...\nArray :', array)   
selection_sort(array)
print('Array :', array)    

修正说明

  • 将打印语句移到selection_sort函数内部的外层循环中,这样就能在index的作用域内访问它;
  • 把交换元素的代码移至内层循环外,确保找到最小值的位置后再完成交换,符合选择排序的正确执行流程。

内容的提问来源于stack exchange,提问作者Jeff Colbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 20:33:10