2016-07-18 7 views
-3

Hier ist mein Code:„Sorted“ -Funktion funktioniert nicht in Python Aufgabe

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“ soll in absteigender Reihenfolge gedruckt werden, aber der Code nicht funktioniert, obwohl ich nicht tun habe irgendwelche Fehler. Irgendeine Idee, warum es nicht ausgeführt wird?

Antwort

2

Die split ist überflüssig, redundant und die Ursache Ihres Problems. Die split Methode einer Zeichenfolge erfordert ein Trennzeichen, das in Ihrem Fall keine gibt, also standardmäßig auf aufeinanderfolgende Leerzeichen. Da Ihre Zeichenfolge keinen fortlaufenden Leerraum hat, wird eine einzelne Liste angezeigt, die die Zahl im Zeichenfolgenformat als einziges Element enthält.

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

die resultierende Liste Sortierung ist invariant wie das, was Sie Sortieren einer Liste von einem einzigen Element

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

Schließlich Füge- und es in eine Ganzzahl umzuwandeln stellt die ursprüngliche Zahl

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

Es ist erwähnenswert, dass sortierte eine Sequenz erwartet, so würde eine Zeichenfolge ausreichend qualifiziert sein, ohne in einzelne Ziffern zu zerlegen

Was Sie wahrscheinlich wollte, ist

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

>>> print Descending_Order(123456789) 
987654321 
+0

Thank you! Bin dankbar. – KirKaz12

0

Sie auch die Zahlen aufspalten list verwenden, dann die Liste sortieren, die Art und Weise:

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

Danke für den Kommentar! – KirKaz12

Verwandte Themen