2017-07-10 1 views
1

Ich möchte ein Programm erstellen, das es einem Benutzer ermöglicht, Sätze von drei Elementen einzugeben, eines für jede Eingabeaufforderung, und dann die drei Werte in einer einzelnen Zeile in einer Textdatei auszugeben.Wie geben Sie 3 Elemente in einer einzelnen Zeile in einer Datei aus?

ist hier etwas grundlegende Beispiel

text_file = open("filename", "w") 

While True: 
     Code = input("Enter code") 
     Description = input("Enter description") 
     Price = input("Enter price") 

Kann mir jemand helfen?

EDIT: Also das ist, wo ich so weit bin.

text_file = open("file.txt", "w") 

while True: 
     user_input = input("Enter a code, description and price") 
     split = user_input.split(" ") 
     split = str(split) 
     text_file.write(split) 

Das einzige Problem ist, es lässt mich nicht eine Liste ausgeben.

+0

Sie sagen, dass die Eingabeaufforderung nur in einer Zeile sein sollte oder dass der Benutzer drei separate Male aufgefordert werden sollte, aber alle diese Daten in eine einzelne Zeile der Datei geschrieben haben? – Will

+0

@poisonishere: Ich denke, du musst noch "alle drei Dinge" klären. Benötigen Sie Hilfe, wenn Sie alle drei * Werte * in eine Zeile Ihrer Ausgabedatei schreiben möchten - oder - wollen Sie alle drei Werte einer einzelnen Eingabezeile lesen, bevor Sie etwas schreiben? Ich denke * Ich * habe es richtig gemacht, aber die anderen Leute, die geantwortet haben, stimmen offensichtlich nicht zu. – Prune

+0

@Prune Ich möchte die drei Elemente in einer Zeile, aber als er den nächsten Satz von 3 Elementen hinzufügt möchte ich das in einer anderen Zeile sein. Wie folgt >>> A112 Maus 25.55 >>> B112 Tastatur 50.00 – poisonishere

Antwort

3
sep = ',' # separator character 
textfile.write(sep.join([Code, Description, Price]) + '\n') 
+0

Ich bekomme eine Fehlermeldung, dass nur ein Argument geben kann und dass ich drei gebe. – poisonishere

+2

@ cᴏʟᴅsᴘᴇᴇᴅ: OP sagte "Wie gibt man 3 Elemente in einer Zeile in einer Datei aus?" Ausgabe, nicht eingegeben. Die Datei ist zum Schreiben geöffnet. – Prune

+0

@poisonishere: TheoretiCAL hat meine Syntax korrigiert; Ich habe vergessen, sie in eine Liste zu verpacken. – Prune

0

die Benutzer Unter der Annahme, teilt die drei Felder mit einem Raum (das heißt 1232 Beispiel Produkte $ 24.95) Sie wissen, dass der erste Raum, den Code von der Beschreibung trennt, und der letzte Raum trennt die Beschreibung von Preis. Dann:

text_file = open("filename", "w") 

while True: 
     user_input = input("Enter Code Description Price:") 
     split_input = user_input.split(' ') 
     code = split_input[0] 
     description = ' '.join(split_input[1:-1]) 
     price = split_input[-1] 

text_file.write('{} {} {}\n'.format(code, description, price)) 
3
with open("filename.txt", "w") as f: 
    while True: 
     f.write(input("Enter code : ")+' ') 
     f.write(input("Enter description : ")+' ') 
     f.write(input("Enter price : ")+'\n') 
+2

Ich glaube nicht, dass Sie nach jedem Druck * einen neuen Zeilenumbruch wünschen - nur den letzten. –

+1

Wenn Sie nur die Eingabe in eine Datei ablegen, ist dies eine nette, enge, wartbare Antwort. Beachten Sie, dass die Eingabewerte nicht im Programm gespeichert werden: Sie werden gelesen, geschrieben und verloren. – Prune

3

Wenn mit älteren Versionen Python> = 3.6 und Kompatibilität mit nicht erforderlich ist:

text_file.write(f'{Code} {Description} {Price}\n') 

Im anderen Fall (aus einer anderen Antwort angepasst):

text_file.write('{} {} {}\n'.format(Code, Description, Price)) 

Hinweis dass es die Defacto-Standardkonvention ist, dass Namen von Variablen mit einem Kleinbuchstaben beginnen sollten. Daher sollten Sie code, description und price für die Variablennamen verwenden.

Verwandte Themen