@cool_brick24: Anmerkungen zum Quelltext: Eingerückt wird mit vier Leerzeichen pro Ebene, nicht fünf.
Namen schreibt man in Python klein_mit_unterstrichen. Ausgenommen Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). `sendPlayerMessage()` müsste also `send_player_message()` heissen.
Vergiss sofort wieder dass es ``global`` gibt. Das hat in einem ordentlichen Programm nichts zu suchen. Wenn eine Funktion oder Methode ein Ergebnis hat, dann gibt man das mit ``return`` an den Aufrufer zurück und nicht über schwer nachvollziebare globale Variablen.
`message_tiles_len` ist überflüssig weil das nur einmal verwendet wird. Da kann man dann auch gleich den Ausdruck an der Stelle schreiben.
Wenn Backslashes in Zeichenkettenliteralen vorkommen sollte man die *immer* escapen oder ”rohe” Zeichenkettenliterale verwenden, auch wenn das Zeichen nach dem Backslash keine besondere Bedeutung hat. Bei Pfaden kann man auch unter Windows den normalen Schrägstrich als Pfadtrenner verwenden. Damit umgeht man dieses Problem ganz.
Dateien sollte man wo möglich mit ``with`` verwenden um das Schliessen der Datei in jedem Fall zu garantieren.
Etwas nach dem Muster ``for i in range(0, len(sequence)):`` ist in Python ein „anti pattern“. Man kann in Python *direkt* über die Elemente von Sequenzen iterieren, ohne den Umweg über einen Index.
Was Du da im `write()`-Aufruf machst ist hochgradig unsinnig. Erst einmal führt der `split()`-Aufruf grundsätzlich zu einer Liste mit genau einem Element, denn die Zeichenkette die da an Leerzeichen zerlegt werden soll kann garantiert *kein* einziges Leerzeichen enthalten weil die Zeichenkette ja bereits durch ein `split()` entstanden ist das an Whitespace-Zeichen zerlegt hat.
Das könnte man also abkürzen wenn man einfach eine literale Liste mit der Zeichenkette als einzigem Element hinschreiben würde. Nur machen Listen mit grundsätzlich immer nur einem Element keinen Sinn. Was soll das?
Der nächste Fehler ist dann eine Zeichenkettenrepräsentation einer Python-Liste in eine Datei zu schreiben. Das ist in 99,99% der Fälle nicht das was man machen möchte. Warum machst Du das? Welchen Sinn hat das?
Wenn ich mal raten müsste, möchtest Du in der Datei eine Zeile pro Eingabe vom Benutzer. Warum schreibst Du dann nicht einfach die Eingabe des Benutzers in die Datei, so wie Du sie bekommst? Jede weitere Verarbeitung müsste ja irgendwie sinnvoll begründbar sein.
Von der Funktion bleibt letztlich das hier übrig:
Code: Alles auswählen
def send_player_message():
line = input('Message: ')
with open('data/chat.data', 'a', encoding='utf-8') as messages_file:
messages_file.write(line + '\n')
return line.split()