Hey,
ich habe heute ein kleines Python Skript geschrieben, um Polindrome in einer Textdatei zu erkennen. Polindrome sind Wörter, die rückwärts geschrieben genau den gleichen Sinn ergeben wie vorwärts geschrieben.
#!/bin/python3
#Polindrome-Woerter in Textdatei erkennen
import string
#Funktion zum Erkennen von Polindromen
def check_polindrome(word):
reverse = ''
removable = ['\n', '\t', '\r']
for c in removable: # Zeug entfernen
word = word.replace(c, '')
for c in string.punctuation: #Sonderzeichen entfernen
word = word.replace(c, '')
for c in string.whitespace: #Leerzeichen entfernen, da sonst falsche Ergebnisse entstehen
word = word.replace(c, '')
if word in string.punctuation or word in string.whitespace: #Leer- und Sonderzeichen abfangen
return False
if word.isdigit() == True: #Zahlen abfangen, da z.B. 121 rueckwaerts auch 121 ergibt
return False
for i in range(len(word)-1, 0-1, -1): #Wort rueckwaerts zusammen basteln
reverse = reverse + word[i]
if reverse.lower() == word.lower(): #Rueckwaerts-Wort mit vorwaerts-Wort vergleichen
return True
else:
return False
#Den Benutzer eine Textdatei oeffnen lassen
file = input('Path to file: ')
polindrome = []
try:
with open(file, 'r') as f:
lines = f.readlines()
except FileNotFoundError:
print('File not found!')
exit(0)
#Einzelne Woerter im Text der Funktion check_polindrome uebergeben
for i in range(0, len(lines)):
lines[i] = lines[i].split(' ')
for word in lines[i]:
if check_polindrome(word) == True:
polindrome.append(word)
else:
continue
#Ergebnis anzeigen
print(len(polindrome), ' found!\n')
for i in range(len(polindrome)):
print(polindrome[i].replace('\n', '')) #\n in Wort entfernen, da sonst zu viele Leerzeichen bei Output
Die Projektidee habe ich von: https://www.gutefrage.net/frage/python-projekt-ideen#answer-357880884
Wie man rückwärts über eine Zeichenkette rotiert, habe ich von: https://stackoverflow.com/questions/7961499/best-way-to-loop-over-a-python-string-backwards
- Hat jemand Verbesserungsvorschläge für meinen Code?
- Ein kleines Feedback bitte