[Probleme beim Datei auslesen]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sylus2000
User
Beiträge: 2
Registriert: Mittwoch 27. Mai 2020, 22:09

Hallo ich lerne gerade python 3 und habe hier eine kleine Methode zum üben geschrieben...
Warum liefert die if-Abfrage in Zeile 27 kein True zurück ?

Bild : https://drive.google.com/open?id=1_NB15 ... zGBqMZVIXi

Danke schonmal im Voraus :wink:
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Code hier in Code-Tags </> einfügen, nicht als Bild.
Eine Zeile 27 gibt es nicht.
Jede Zeile hat ein Zeile-Ende-Zeichen, das beim Umdrehen ganz am Anfang der Zeile steht, so dass die if-Abfrage nie erfüllt sein kann.
Sylus2000
User
Beiträge: 2
Registriert: Mittwoch 27. Mai 2020, 22:09

Danke hab einfach das "\n" mit "" replaced ! :wink:
(Hatte den Screenshot falsch zugeschnitten deswegen waren die Zeilenangaben weg...)
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Funktionsnamen schreibt man wie Variablennamen komplett klein.
Die eine Funktion tut auch zu viel. Sowohl eine Datei lesen, als auch filtern als auch auf Palindrom testen.
Das sollten mindestens zwei Funktionen sein. Das was unter `if __name__` steht sollte auch in eine Funktion wandern, die üblicherweise main genannt wird.
Dateien, die man öffnet, müssen auch wieder geschlossen werden, am besten mit dem with-Statement. Der Modus 'r' ist der default und muß nicht angegeben werden, statt dessen sollte bei Text-Dateien immer ein Encoding angegeben werden.

Code: Alles auswählen

def is_palindrom(word):
    word = word.lower()
    return word == word[::-1]

def palindrom_in_files(path):
    with open(path, encoding="UTF8") as words:
        words = (w.strip() for w in words)
        return list(filter(words, is_palindrom))

def main():
    print(palindrom_in_files("palindromes.txt"))

if __name__ == '__main__':
    main()
Antworten