2014-03-18 23 views
-1

與功能的練習我創建了一個函數來排序號碼清單(Python 3.x都有):使用Python解釋器,我得到顯示(打印)排序列表蟒(不使用list.sort)

def insertion_sort(list): 
    for index in range(1, len(list)): 
     value = list[index] 
     i = index -1 
     while i >= 0: 
      if value < list[i]: 
       list[i+1] = list[i] 
       list[i] = value 
       i = i - 1 
      else: 
       break 

這樣的:

>>> a = [5,3,7,9,1,8,6,2,4] 
>>> insertion_sort(a) 
>>> print(a) 
[1, 2, 3, 4, 5, 6, 7, 8, 9] 

這個功能效果很好,如果在Python解釋器使用,但我想做得更多,並使用輸入法「問」的數字,所以我這樣做...

a = input("Enter a list of numbers separated by a comma: ") 
c = set(a) 
b = [] 
b.append(c) 
insertion_sort(b) 
print (b) 

,當我運行的代碼,輸入數字537918624我得到這個:

[{'8', '9', '2', '3', '1', '6', '7', '4', '5'}] 

爲什麼不會它排序它,我怎麼可以把它打印列表不帶引號?

+0

發佈問題之前,您是否嘗試過調試代碼?那麼'a'的價值是什麼? 'c'的價值是什麼?運行排序方法之前,「b」的值是多少?也許問題不在於排序和顯示,而是解析輸入。那麼你應該相應地改變問題的標題(和標籤)。 –

回答

0

引號表明您的字符串中包含字符串,而不是整數。 input將永遠給你一個字符串;你可以使用int()將字符串轉換爲整數。

此外,您正在給排序功能一個列表與單個項目裏面,set。用單個項目對列表進行排序沒有任何意義。

如下我會處理這個:

ui = input(...) # take input e.g. "1, 2, 3" 
numbers = list(map(int, ui.split(","))) # turn to list of ints [1, 2, 3] 
insertion_sort(numbers) # sort the list 

沒有必要使用set - 如果有重複號碼的排序算法應該能夠管理這一點。

您的輸入沒有逗號 - 我假設(按提示!)用戶應該真的進入例如5,3,79,...

最後,請注意,您不應該調用參數insertion_sortlist,因爲這會影響內置。

+0

這很好,謝謝! – xchido