2016-07-18 63 views
-3

這裏是我的代碼:「排序」功能並不在Python任務工作

def Descending_Order(num): 
    return int(''.join(sorted(str(num).split(), reverse = True))) 
print Descending_Order(0) 
print Descending_Order(15) 
print Descending_Order(123456789) 

「民」應該是按降序進行打印,但代碼不能正常工作,雖然我不有任何錯誤。任何想法爲什麼它沒有被執行?

回答

2

split是多餘的,多餘的,是您的問題的原因。字符串的split方法需要一個分隔符,在你的情況下,沒有任何默認爲連續的空格。由於您的字符串沒有連續的空格,因此它會生成一個單獨的列表,其中包含字符串格式的數字作爲唯一的元素。

>>> str('123456789').split() 
['123456789'] 

排序結果的列表是不變的你是什麼排序是一個單一的元素

>>> sorted(['123456789']) 
['123456789'] 

最後加入,並將其轉換爲整數的列表恢復原來的數

>>> int(''.join(sorted(['123456789']))) 
123456789 

值得一提的是,排序需要一個序列,所以一個字符串將足夠資格進行排序而不會分裂成個人數字

你可能想要的是

>>> def Descending_Order(num): 
    return int(''.join(sorted(str(num), reverse = True))) 

>>> print Descending_Order(123456789) 
987654321 
+0

謝謝!欣賞它。 – KirKaz12

0

您也可以分割使用list的號碼,然後進行排序這樣的名單:

def Descending_Order(num): 

    digits = [digit for digit in list(str(num))] 

    return int("".join(sorted(digits, reverse = True))) 

# Output 
>>> Descending_Order(123456789) 
987654321 
+0

謝謝你的評論! – KirKaz12