Ist mein Code richtig?
Es geht darum Palindrome zu erkennen
ist nicht der schönste Code, aber wollte mal selbst versuchen das zu machen ohne das in ein String einzulesen und dann zu inverten sondern die letzte und die erste Ziffer vergleichen und dann so weiter
Hab das schnell auf dem Handy gemacht
1 Antwort
Gegenfrage: lieferte dein Monster das gewünschte Ergebnis?
Ich gedenke gewiss nicht Dein Monstrum abzutippen!
Letztlich zerlegst Du einen Zahl auch nur "zu Fuß" in einzelne Zehnerpotenzen ?
Schön das Du Dich daran versuchst zu ergründen wie man Zahlen zerlegen kann. Aber mit Palindromen hat das ganze wenig zu tun. umd ob Deine funktion funktioniert kannst Du ganz einfach selbst verifizieren, statt andere Leute mit fleißaufgaben zu beschäftigen.
Beim Palindrom einer Zahl kommt es darauf an in welchem Zahlensystem man die jeweilige Zahl betrachtet.
dezimal 65672527656 #Palindrom
binär 111101001010011 #kein Palindrom
oktal 751230637450 # auch keins
hex F4A633F28 : ebenfalls fehlanzeige
..aber manchmal sollte man einfach die Kirche im Dorf belassen und das nutzen, was in einer Programmiersprache bereits verfügbar ist:
def is_Palindrome(x) :
#einfach den String umkehren
reversedString = x[::-1]
# ...und mit dem Original vergleichen
return x == reversedString
myString = '65672527656'
print ( is_Palindrome(myString))
myString = '1236421'
print ( is_Palindrome(myString))
..das wird aber nicht mit gemischter Großkleinschreibung fertig. Zudem gibt es auch Satzpalindrome, welche Leer- und Satzzeichen enthalten.
import re
def is_Palindrome(x) :
lowerStr = x.lower()
cleanedStr = re.sub(r'[^a-zA-Z0-9]', '', lowerStr) #alles außer Buchstaben und Ziffern entfernen
reversedString = cleanedStr[::-1] #umderhen
print("cleaned :" + cleanedStr) #Verboseinfo
print("reversed :" + reversedString) #Verboseinfo
# ...und mit dem "gesäubertem String" vergleichen
return cleanedStr == reversedString
myString = '65672527656'
print ( is_Palindrome(myString))
myString = '1236421'
print ( is_Palindrome(myString))
myString = 'O Genie, der Herr ehre dein Ego!'
print ( is_Palindrome(myString))
myString = 'Ein Esel ist schlau'
print ( is_Palindrome(myString))
Voilà :
cleaned :65672527656
reversed :65672527656
True
cleaned :1236421
reversed :1246321
False
cleaned :ogeniederherrehredeinego
reversed :ogeniederherrehredeinego
True
cleaned :eineselistschlau
reversed :ualhcstsilesenie
False
..das auch noch etwas von Überflüssigem bereinigt:
def is_Palindrome(x) :
cleanedStr = re.sub(r'[^a-zA-Z0-9]', '', x.lower())
reversedString = cleanedStr[::-1]
return cleanedStr == reversedString