2017-09-08 2 views
0

Ich nehme gerade einen Kurs über Python und bin gerade dabei, mit einem Teil meiner Hausaufgaben zu kämpfen.Palindrome-Funktion erstellen, die boolesche Werte in Python zurückgibt

Die Frage fordert uns auf, eine Funktion zu konstruieren, die eine Zeichenkette prüft, um festzustellen, ob es sich um ein Palindrom handelt. Das Problem, das ich habe, ist, dass für einen der Tests, die mein Lehrer zur Verfügung gestellt hat, das Palindrom "Niemals ungerade oder gerade" ist, das Leerzeichen enthält. Die Leerzeichen führen dazu, dass meine Funktion fehlschlägt, weil sie nicht nur die Buchstaben in der Phrase verwendet.

Mein aktueller Code ist:

def is_palindrome(phrase): 

    return phrase == phrase[::-1] 

Sie mit dem Code zu testen ist:

assert is_palindrome("Never odd or even") 

Jede mögliche Hilfe würde geschätzt! Vielen Dank.

+0

So wie es ist, interessiert sich Ihr Code nicht für Groß- oder Kleinschreibung. Wie haben Sie versucht, diese zu berechnen? – Blender

+1

Entfernen Sie alle Leerzeichen und konvertieren Sie alles in den gleichen Fall, dann führen Sie den Test durch. – Barmar

+0

Ich bin nicht sicher, wie ich meinen Code bearbeiten würde, um dies zu berücksichtigen. Müsste ich die Zeichenfolge in eine Liste konvertieren? – JDF

Antwort

1

Ich denke, das ist, was Sie wollen: -
is_palindrome("Never odd or even".replace(" ", "").lower())

Oder

Wenn Sie Ihre Funktion dann aussehen Ihre Funktion ändern wie:

def is_palindrome(phrase): 
    phrase=phrase.replace(" ","").lower() 
    return phrase == phrase[::-1] 

und Sie können es mit is_palindrome("Never odd or even")

anrufen
0

Zuerst entfernen Sie die Leerzeichen, dann verwenden Sie die Rekursion und prüfen nur, ob das erste und das letzte Zeichen gleich sind und sich im inneren Teil wiederholen.

def is_palindrome(x): 
    x = "".join(x.split()).lower() 
    if (len(x) <= 1): return True 
    if x[0] != x[-1]: return False 
    return is_palindrome(x[1:-1]) 
+0

Dies ist wahrscheinlich nicht effizienter, als die gesamte Zeichenfolge umzukehren, da Sie bei jedem rekursiven Aufruf effektiv neue String-Objekte kopieren ("x [1: -1]" ist eine neue Zeichenfolge mit eigenem Speicher) . –

+0

Oh interessant. Guter Punkt –

Verwandte Themen