Ist mein Code richtig?

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