Absatz mit [datei].write(variable)

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
robie
User
Beiträge: 1
Registriert: Montag 6. Juli 2020, 10:03

Code: Alles auswählen


import sys
import time

# Variablen

req_password = 1234

#Start.

print()
print("================")
print("Guestbook")
print("================")
print()

print("Loading...")
time.sleep(1)

input_name = input("Please enter your name! >>")
time.sleep(0.6)

print("Loading...")
time.sleep(1.2)

input_password = int(input("Please validate your ID! (password) >>"))

print("Loading...")
time.sleep(2.4)

# Validate Password.

if input_password == req_password:
    print()
    time.sleep(1.5)
    
    print("Welcome,",input_name," ")
    print()
    time.sleep(0.4)
    
    #Create sentece.
    
    input_user = input("Enter your opinion! >>")
    datei_handler = open('guestbook_log.txt',mode='a')
    datei_handler.write(input_user)
    print()
    print("Thank you,",input_name,"!")
    time.sleep(1)

    print("The Guestbook will be closed in 5 seconds ...")
    time.sleep(5)
    exit(0)

else: print("Validation failed",input_name,":-(")
print("The Guestbook will be closed in 5 seconds ...")
time.sleep(5)
exit(0)

[FRAGE]

Bei datei_handler.write(input_user) möchte ich einen Absatz hinbekommen, weil es in der .txt Datei sonst ein Durcheinnander gibt.
Wie geht das wenn ich ein Absatz möchte (\n) (Wo muss das hin)
Dankeschön
Robie :lol:
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

An das Ende der Zeile, also datei_handler.write(f"{input_user}\n"). <- Les dir dazu mal was zu Stringformatierung bzw. f-Strings durch.
Dateien die man öffnet sollte man auch wieder schließen, am besten benutzt man das with Statement.
Die ganzen time.sleep() sind unnötig un ziehen nur das Programm in die Länge, also können weg.
Das exit am Ende kann auch weg. Das Programm ist da ja sowieso zu Ende.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Die ganzen "Loading"-Ausgaben, wo gar nichts geladen wird, sind falsch.
Dass `name` und `password` aus einem Input stammen, ist für den weiteren Programmablauf irrelevant.
Das was mit `Variablen` überschrieben ist, sind Konstanten, und die werden komplett GROSS geschrieben.
Was soll das `req` bei `req_password`? Benutze keine Abkürzungen, denn dann muß man raten, was denn das bedeuten soll.
Warum ist das Passwort nur eine Zahl?
Warum wird die Opinion an die Variable `input_user` gebunden? Das ist doch gar kein Benutzer.
Dateien öffnet man am besten mit dem with-Statement, dann wird sie auch wieder geschlossen, was bei Dir bisher fehlt, und damit werden die Daten im Zweifel gar nicht geschrieben. Textdateien sollte man immer mit einem Encoding öffnen.

Code: Alles auswählen

REQUIRED_PASSWORD = 1234

def main():
    print()
    print("================")
    print("Guestbook")
    print("================")
    print()

    name = input("Please enter your name! >>")
    password = int(input("Please validate your ID! (password) >>"))

    if _password == REQUIRED_PASSWORD:
        print()
        print(f"Welcome, {name}!")
        print()
        
        opinion = input("Enter your opinion! >>")
        with open('guestbook_log.txt', mode='a', encoding="utf8") as output:
            output.write(f"{opinion\n}")
        print()
        print("Thank you, {name}!")
    else:
        print(f"Validation failed {name} :-(")

if __name__ == '__main__':
    main()
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

@Sirius: Zeile 24 hast du ein f für den f-String vergessen und Zeile 20 gehört der Zeilenumbruch hinter die geschweifte Klammer. Bei der if Abfrage ist auch noch die Variable _password falsch.

Noch eine Anmerkung: Zum Abfragen von Passwörtern benutzt man in der Regel getpass(), da wird die Eingabe für das Kennwort verdeckt.
Antworten