2016-07-18 2 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) 

«Num», как предполагается, должны быть напечатаны в порядке убывания, но код не работает, хотя я не есть ошибки. Любая идея, почему это не выполняется?

ответ

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

Смежные вопросы