Wie ist dieser verbesserte Python Code zu Palindromen?

Verbesserter Code mit Hilfe der Antwort von alfredo153

#!/bin/python3
#Palindrome-Woerter in Textdatei erkennen
import string

#Funktion zum Erkennen von Palindromen
def check_palindrome(word):
    reverse = ''
    removable = string.punctuation + string.whitespace + string.digits
    for c in removable: #Sonderzeichen entfernen
        word = word.replace(c, '')
    if word in string.punctuation or word in string.whitespace: #Sonderzeichen abfangen
        return False
    for c in word[::-1]: #Wort rueckwaerts zusammen basteln
        reverse = reverse + c
    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: ')
palindrome = []

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_palindrome uebergeben
for line in lines:
    line = line.split(' ')
    for word in line:
        if check_palindrome(word):
            palindrome.append(word)
        else:
            continue

#Ergebnis anzeigen
print(len(palindrome), ' found!\n')
for i in range(len(palindrome)):
    print(palindrome[i].replace('\n', '')) #\n in Wort entfernen, da sonst zu viele Leerzeichen bei Output
Computer, programmieren, Informatik, Python
Verbesserungsvorschläge für mein Python Skript: Polindrome finden?

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
Computer, programmieren, Informatik, Python
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.