2017-10-18 2 views
1

Hallo Ich mache eine Schulaufgabe mit dieser AnleitungSpielnamen zu einer Datei hinzufügen?

eine while-Schleife schreiben, die Benutzer für ihr Lieblingsspiel auffordert. Wenn sie den Namen des Spiels eingeben, drucken Sie eine Nachricht auf dem Bildschirm und fügen Sie eine Zeile hinzu, die ihr Protokoll in einer Datei namens games.txt aufzeichnet. Stellen Sie sicher, dass jeder Eintrag in einer neuen Zeile in der Datei angezeigt wird.

Ich habe Probleme, die Schleife mehrmals zu fragen, anstatt nur das Spiel immer und immer wieder hinzuzufügen. Außerdem möchte ich nicht, dass die games.txt Datei die vorherigen Spiele verliert, die hinzugefügt wurden.


Dies ist mein aktueller Code:

filename = 'games.txt' 
print("When you want to finish adding games just type 'done'") 
game = input('Whats your favorite game? ') 

with open(filename, 'w') as file_object: 
    while game != 'done': 
     print(game) 
     file_object.write(game + str("\n) 

Wie Sie sehen können, wenn ich es laufen und ich habe „Schicksal 2“ als Spiel wird es 2 an die games.txt benannte Datei Hinzufügen des Schicksals halten bis ich das Programm stoppe.

Antwort

1

Sie haben derzeit eine Endlosschleife, die den letzten in die Datei eingegebenen Spielnamen unbegrenzt lange schreibt.

Sie müssen die Eingabeaufforderung in der while-Schleife platzieren.
Ich denke, es ist besser, zuerst alle Daten in einer Liste zu sammeln und dann die Datei zu schreiben.

filename = 'games.txt' 
print("When you want to finish adding games just type 'done'") 

games = [] 
game = '' 
while True: 
    game = input('Whats your favorite game? ') 
    if game == 'done': 
     break 
    games.append(game) 

with open(filename, 'w') as file_object: 
    for game in games: 
     file_object.write(game + str("\n")) 
+0

Aber wird das nicht ein Problem verursachen, da 'Spiel' nach der While-Schleife definiert ist? – CholoBoy

+0

Ja, guter Fang, korrigiert. –

+0

Nachdem ich diesen Code ein paar Mal getestet habe, habe ich festgestellt, dass wenn ich 'done' tippe, fügt er es der Liste hinzu, also habe ich einfach "games.remove ('done')" nach der ersten while-Schleife hinzugefügt. – CholoBoy

Verwandte Themen