我創建了一個排序函數,用於排序整數列表,從最高到最低。 下面是代碼:Python中自定義排序函數的錯誤結果
def sort(list):
s = []
dropnum = 0
l = len(list) - 1
counter = 0
s.append(list[0])
while 1:
maximum = len(s)
if counter == l:
break
if list[counter] < s[dropnum]:
dropnum = dropnum + 1
else:
counter = counter + 1
if dropnum >= maximum:
a.append(list[counter])
else:
s.insert(dropnum, list[counter])
dropnum = 0
return s
print sort([70,9,24,82,102])
我應該得到的輸出:
[102,82,70,24,9]
,但我得到:
[102, 82, 24, 9, 70]
爲什麼不使用'reverse(sorted(list))'?此外,你不應該命名你的變量列表,因爲有一個名爲list的內建函數。如果這是作業,請將其標記爲家庭作業。 – forivall 2012-03-26 00:07:26
爲什麼你要重新實現'sorted()'?這是功課嗎? – Amber 2012-03-26 00:07:40
那麼,在'if dropnum> = maximum:'之後你確實有'a.append()'而不是's.append'。另外,使用'list'作爲變量名通常是一個壞主意,因爲它是Python中的內置對象。 – Marius 2012-03-26 00:11:17