我的Python代码中有以下错误:
Error: Shadows name Array from outer scope
以及
Error: Parameter Array value is not used.
这是我的Python课程的家庭作业,要求如下:
Modify the merge sort algorithm to sort a list in descending order.
有人能帮我吗?这是我的密码:
#! /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)
这些不是错误。它们是IDE发出的警告。你知道吗
创建一个与外部作用域中的某个对象同名的局部变量是完全可以接受的。事实上,这是整个范围的重点;我甚至不知道为什么这是一个警告。我完全不明白另一个警告-它说您有一个未使用的参数,但我看到您在该函数中使用了多次。你知道吗
您可以放心地忽略这些警告。你知道吗
第一个警告是告诉您,您的代码中有一个名为“Array”的东西,它在更高级别上隐藏了一个同名的东西(可能是一个类),否则就可用了。正如TigerhawkT3所说,这并不是一个真正的问题,但是您可以通过将代码中的名称“Array”更改为其他名称来消除警告。你知道吗
第二个错误告诉您,在函数MergeSort中,从不使用参数数组中的任何值。现在还不太清楚MergeSort函数的结束位置,因为您的缩进被弄乱了,但是我可以告诉您,您正在从MergeSort调用Merge来处理实际更新的数字列表。您可以通过在MergeSort函数的顶部或底部添加一个类似“2;=Array[0]”的不执行任何操作行来消除第二个警告。你知道吗
相关问题 更多 >
编程相关推荐