Python :: Aufgabe #305 :: Lösung #1

4 Lösungen Lösungen öffentlich
#305

Aufgabe 4 - Versteckte Palindrome.

Fortgeschrittener - Python von Yali23 - 09.11.2020 um 17:19 Uhr
Irgendjemand hat Strings in Listen konvertiert und dabei sind leider auch noch an zufälligen Stellen Zahlen (int und float) zwischen die Zeichen des zugrundeliegenden Strings gerutscht. Aus dem String Python ist also beispielsweise die Liste


Quellcode ausblenden Python-Code
['P', 3, 'y', 't', 0.0, 'h', 1, 1, 1.0, 'o', 'n' ]


geworden. Implementieren Sie eine Funktion cleaner, die die Zahlen aus dieser Liste enfernt und die bereinigte Liste zurückgibt. Dabei soll die ursprüngliche Liste nicht modifiziert werden.

Verwenden Sie dann die Funktion cleaner, um die Funktion palindrome zu implementieren. Diese soll als Input eine noch nicht bereinigte Liste entgegennehmen und das in der Liste versteckte Wort darauf prüfen, ob es sich bei dem Wort um ein Palindrom handelt oder nicht. Wenn das Wort ein Palindrom ist, dann soll die Funktion palindrome das ursprüngliche Wort und True als 2-Tupel zurückgeben, ansonsten das ursprüngliche Wort und False. Wir beschränken uns hier auf Wortpalindrome. Sie müssen Satzpalindrome nicht betrachten / berücksichtigen.

Beispieloutput:

Quellcode ausblenden Python-Code
palindrome(['P', 3, 'y', 't', 0.0, 'h', 1, 1, 1.0, 'o', 'n' ])
('Python', False)

palindrome(['A', 6, 8.3, 'n', 5, 'n', 'a'])
('Anna', True)



Quellcode ausblenden Python-Code
# Führen Sie diese Zelle aus, um Ihre Funktion zu testen.
# Wenn das Ausführen dieser Zelle zu Fehlern führt, dann ist Ihre Implementierung vermutlich nicht korrekt.

L1 = ['P', 3, 'y', 't', 0.0, 'h', 1, 1, 1.0, 'o', 'n' ]
L2 = ['A', 6, 8.3, 'n', 5, 'n', 'a']
L3 = ['P', 'y', 't', 'h', 'o', 'n']

assert palindrome(L1) == ('Python', False)
assert palindrome(L2) == ('Anna', True)
assert palindrome(L1) == palindrome(L3)
assert L1 == ['P', 3, 'y', 't', 0.0, 'h', 1, 1, 1.0, 'o', 'n' ]
assert L2 == ['A', 6, 8.3, 'n', 5, 'n', 'a']
#1
vote_ok
von kaschperl (400 Punkte) - 25.11.2020 um 22:21 Uhr
Quellcode ausblenden Python-Code
def cleaner(liste):
    """ Gibt eine gegebene Liste zurück, bei der
        alle nicht alphabetischen Zeichen aus einer Liste """
    returnliste = []
    for char in liste:
        if str(char).isalpha():
            returnliste.append(char)
    return returnliste


def palindrome(liste):
    """Palindrome Test"""
    string_token = ''
    cleanlist = []
    cleanlist = cleaner(liste)
    for i in range(int(len(cleanlist)/2)):
        if cleanlist[i].lower() != cleanlist[len(cleanlist)-(i+1)].lower():
            return (string_token.join(cleanlist), False)
    return (string_token.join(cleanlist), True)


# Vorgabe
L1 = ['P', 3, 'y', 't', 0.0, 'h', 1, 1, 1.0, 'o', 'n' ]
L2 = ['A', 6, 8.3, 'n', 5, 'n', 'a']
L3 = ['P', 'y', 't', 'h', 'o', 'n']

# Meine Ergebnisausgabe / Test
print("Testausgabe:")
print(palindrome(L1))
print(palindrome(L2))
print(palindrome(L3))

# Vorgabe Test aus Aufgabe
assert palindrome(L1) == ('Python', False)
assert palindrome(L2) == ('Anna', True)
assert palindrome(L1) == palindrome(L3)
assert L1 == ['P', 3, 'y', 't', 0.0, 'h', 1, 1, 1.0, 'o', 'n' ]
assert L2 == ['A', 6, 8.3, 'n', 5, 'n', 'a']

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1988448

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.