不使用参数数组值

时间:2016-05-07 21:43:22

标签: python

我的Python代码中有这些错误:

Error: Shadows name Array from outer scope

Error: Parameter Array value is not used.

这是我的Python课程的作业,这些是要求:

  

修改合并排序算法以按降序对列表进行排序。

任何人都可以帮我解决这个问题吗?这是我的代码:

#! /usr/bin/python 
def Merge(Array, firstStart, firstEnd, secondEnd):
    n1 = firstEnd - firstStart + 1
    n2 = secondEnd = firstEnd
    Temp1 = [None] * n1
    Temp2 = [None] * n2

    for i in range(n1):   
        Temp1[i] = Array[firstStart + i]

        for i in range(n2):
            Temp2[i] = Array[firstEnd + i + 1] 
            i = 0
            j = 0

            for k in range(firstStart, secondEnd):
                if Temp1[i] >= Temp2[j]:   
                    Array[k] = Temp1[i]
                    i = i + 1 
                else: 
                    Array[k] = Temp2[j] 
                    j = j + 1 
                    return Array

def MergeSort(Array, left, right):   
   if left < right:
       mid = (left + right) / 2 
       MergeSort(Array, left, mid) 
       MergeSort(Array, mid + 1, right)
       Merge(Array, left, mid, right)
       Array = [10, 30, 40, 80, 20`, 70, 90, 60, 50]`
       MergeSort(Array, 0, 8)
       print(Array)

2 个答案:

答案 0 :(得分:0)

那些不是错误。它们是来自IDE的警告。

创建一个与外部作用域中的某个名称相同的局部变量是完全可以接受的。事实上,这是范围的重点;我甚至都不知道为什么这是一个警告。我根本不理解另一个警告 - 它说你有一个未使用的参数,但我看到你在该函数中多次使用它。

您可以放心地忽略这些警告。

答案 1 :(得分:0)

第一个警告告诉你,你有一个名为&#34; Array&#34;在你的代码中隐藏了一些更高级别的东西,它们具有相同的名称(它可能是一个类),否则它将是可用的。正如TigerhawkT3所说,这不是一个真正的问题,但你可以通过更改名称&#34; Array&#34;来消除警告。在你的代码中的其他东西。

第二个错误告诉您在函数MergeSort中,您永远不会使用参数Array中的任何值。由于你的缩进搞砸了,MergeSort函数的结束位置并不是很清楚,但是我可以告诉你,你从MergeSort调用Merge来处理实际更新的数字列表。你可以通过添加像#34; _ = Array [0]&#34;在MergeSort函数的顶部或底部。