0

私は Python の使い方を学んでおり、まず、ある種のコーディングを行っています。可能な変更を 100 通り試しましたが、修正方法がわかりません。これが私のコードです:

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

私を助けてくれてありがとう!

4

2 に答える 2

7

に割り当て たいと思いますx

x = L[j]

あなたが使用している==; 代わりに比較します。これはいくつかの場所で行います。==はブール値に評価され (2 つの項目が等しいと見なされる場合)、=は変数に割り当てられます。

Python では、変数を一時変数なしで直接交換できます。

if i <= j:
    L[j], L[i] = L[i], L[j]
于 2013-02-15T21:07:20.730 に答える
2

のように、割り当て==の代わりに使用しているいくつかの場所で、これは項目と比較する方法です。あなたに割り当てるには が必要です。=x == L[j]xx = L[j]

同様に修正する必要がある、このような行が他にもいくつかあることに注意してください。

于 2013-02-15T21:07:47.217 に答える