Seite 1 von 1
Standardparameter abhängig von anderen Parametern
Verfasst: Donnerstag 7. September 2006, 15:05
von Actimehl
Code: Alles auswählen
def palidrom_rek(wort, anf=0, ende=len(wort)-1):
if anf >= ende: return True
if wort[anf] == wort[ende]:
return palidrom_rek(wort, anf+1, ende-1)
else:
return False
print palidrom_rek("HabbsbbaH")
Ich möchte einer Funktion einen Standartparameter geben der von einem anderen Parameter der Funktion anhängt. Ist so etwas
möglich? Der obige Code funktioniert jedenfalls so nicht
Gruß Actimehl
Verfasst: Donnerstag 7. September 2006, 16:01
von BlackJack
Das ist nicht direkt möglich weil die Vorgaben nur einmal berechnet werden und zwar wenn das ``def`` ausgeführt wird und nicht jedesmal beim Aufruf.
Üblicherweise nimmt man für solche Fälle einen Platzhalter und testet auf den in der Funktion:
Code: Alles auswählen
def palidrom_rekursiv(wort, anfang=0, ende=None):
if ende is None:
ende = len(wort) - 1
if anfang >= ende:
return True
if wort[anfang] == wort[ende]:
return palidrom_rekursiv(wort, anfang + 1, ende - 1)
else:
return False
Diese rekursive Funktion ist aber nicht so gut was die Laufzeit und den Speicherverbrauch angeht. Ausserdem ist bei CPython die Rekursionstiefe künstlich beschränkt.
Eine nicht-rekursive Lösung könnte zum Beispiel so aussehen:
Code: Alles auswählen
def is_palindrome(sequence):
length = len(sequence)
midpoint = length // 2
correction = (length & 1) - 1
return sequence[:midpoint] == sequence[-1:midpoint+correction:-1]