我是python的新手。我正在嘗試編寫mergesort的python代碼,我無法找到錯誤。獲取錯誤無法訂購的類型:int()> = list()
import math
t = int(input())
def merge(lf,rf):
p=0
q= 0
b=[]
for i in range(len(rf)+len(lf)):
if (p>=len(lf)):
b.append(rf[q:])
break
elif (q>=len(rf)):
b.append(lf[p:])
break
elif (lf[p]>=rf[q]):
b.append(rf[q])
q=q+1
else:
b.append(lf[p])
p=p+1
return b
def sort(a):
if (len(a)>1):
mid = int(len(a)/2)
lf=a[:mid]
rf=a[mid:]
lf=sort(lf)
rf=sort(rf)
a=merge(lf,rf)
print (a)
return a
for i in range(t):
n = int(input())
a = [0]*n
for j in range(n):
a[j]=int(input())
sort(a)
print(a)
哪一行引發無法編碼的類型錯誤?簡而言之,您將整數與整數列表進行比較,並且這在Python 3中是不允許的。您可能已經忘記了索引列表引用(例如'x> l [i]'而不是'x> = l [i]'請閱讀http://stackoverflow.com/help/mcve – chepner
for循環中的最後一個'print'語句打印原始列表,並且我不確定這是否是打算的。如果要打印排序列表相反,你將不得不重新分配'a'到'sort'的返回。 – Leon
當你的Python代碼拋出一個錯誤時,如果你可以將_entire_ traceback錯誤信息粘貼到你的問題中,它是非常有用的,所以我們可以看到究竟是什麼導致了(把它放到一個代碼塊中,保存格式化) –