我正在学习使用Python,并开始编写某些类型的代码。 我尝试了一百个可能的更改,但我不知道如何修复它。 这是我的代码:
from random import *
from time import *
L = []
for m in range(0,100):
L.append(randint(0,100))
def quicksort(L, first, last):
i = first
j = last
pivote = (L[i] + L[j]) / 2
while i < j:
while L[i] < pivote:
i+=1
while L[j] > pivote:
j-=1
if i <= j:
x == L[j]
L[j] == L[i]
L[i] == x
i+=1
j-=1
if first < j:
L == quicksort(L, first, j)
if last > i:
L == quicksort(L, i, last)
return L
start = time()
print ("Disordered:" , L)
L = quicksort(L, L[0], L[len(L)-1])
print ("Ordered:" ,L)
print ("%.2f seconds" % (time() - start))
这是错误:
Traceback (most recent call last):
File "/Users/Ricardo/Desktop/QuickSortR.py", line 48, in <module>
L = quicksort(L, L[0], L[len(L)-1])
File "/Users/Ricardo/Desktop/QuickSortR.py", line 28, in quicksort
x == L[j]
NameError: global name 'x' is not defined
感谢您的帮助!
答案 0 :(得分:7)
我认为你想分配给 x
:
x = L[j]
您正在使用==
;相反,相反。你在几个地方这样做; ==
求值为布尔值(当两个项被认为相等时),而=
则赋值给变量。
在python中,您可以直接交换变量而无需临时:
if i <= j:
L[j], L[i] = L[i], L[j]
答案 1 :(得分:2)
在某些地方,您在分配时使用==
而不是=
,例如x == L[j]
,这就是您与商品进行比较的方式。要分配给x
,您应该x = L[j]
。
请注意,您还需要修复此类其他几行。