Seite 1 von 1

[Probleme beim Datei auslesen]

Verfasst: Mittwoch 27. Mai 2020, 22:17
von Sylus2000
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:

Re: [Probleme beim Datei auslesen]

Verfasst: Mittwoch 27. Mai 2020, 22:23
von Sirius3
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.

Re: [Probleme beim Datei auslesen]

Verfasst: Mittwoch 27. Mai 2020, 22:33
von Sylus2000
Danke hab einfach das "\n" mit "" replaced ! :wink:
(Hatte den Screenshot falsch zugeschnitten deswegen waren die Zeilenangaben weg...)

Re: [Probleme beim Datei auslesen]

Verfasst: Donnerstag 28. Mai 2020, 06:16
von Sirius3
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()