2016-10-29 2 views
0

Python Challenge-25Python Herausforderung 25: Schreiben von Dateien

ein Zeichen-up-Programm für einen After-School-Club schreiben; sollte es den Benutzer für die folgenden Angaben stellen und sie in einer Datei speichern:

  • Vorname
  • Nachname
  • Geschlecht
  • Formular

Für die oben Aufgabe, die ich das schrieb folgender Python-Code:

# Python Challenge 25 

print ("Hello user, this is a virtual application form" 
     "\nfor joining after-school clubs at -Insert school name here-") 

first_name = input("\n\nPlease input your first name:") 
last_name = input("Please input your last name:") 
gender = input("Please input your gender:") 
form = input("Please input your form name:") 
club = input("What after-school club would you like to attend?\n") 

file = open("application-form.txt", "w") 
file.write(first_name) 
file.write (last_name) 
file.write (gender) 
file.write (form) 
file.write (club) 
file.close() 


print (first_name, "Thank you for taking your time to fill this virtual form" 
     "\nall the information has been stored in a file to maintain confidentiality") 

Ein Beispiel o f das Ergebnis des obigen Code:

enter image description here

Meine Frage

  1. Wenn die Textdatei alle Benutzereingaben gespeichert wird in einer Zeile gespeichert wird, gibt es eine Möglichkeit, wo ich Kann jeder Eingang in eine separate Zeile gesetzt werden?

  2. Gibt es eine effizientere Möglichkeit, den obigen Code zu schreiben?

+0

Mit effizienter, meinst du kürzerer Code oder läuft schneller? –

+0

ein kürzerer Code. – Hackers45

Antwort

2

Im Gegensatz zu print, fügt write nicht automatisch Zeilenende an. Sie können file.write("\n") zwischen Ihren Schreiboperationen hinzufügen, um Zeilenenden zu interkalieren.

Alternativ können Sie eine einzelne Zeichenfolge zwischen den Zeilenenden erstellen, indem Sie join verwenden und diese einzelne Zeichenfolge schreiben.

Beispiel:

file.write("\n".join([line1, line2, line3])) 
+0

Vielen Dank für Ihre Unterstützung! – Hackers45

+0

Ihr Code hat das Problem gelöst, dem ich gegenüberstand Vielen Dank! – Hackers45

2

1) ersetzen file.write(first_name) mit file.write(first_name + '\n') oder die Linie file.write('\n') kurz nach hinzufügen.

2) Ich glaube nicht, der Code kann gemacht werden, schneller zu laufen, und ich glaube nicht, es braucht, aber in Bezug auf die Codequalität/Länge würde ich die Datei schreiben Abschnitt wie folgt zu schreiben:

+0

@ Alex Hall Vielen Dank für Ihre Hilfe. Der obige Code hat geholfen! – Hackers45

1

Wie für den Code effizienter/sauberere machen, könnten Sie eine Funktion auf Anfrage verwenden und die Daten speichern:

def get_info(prompts): 
    file = open("application-form.txt", "w") 
    for prompt in prompts: 
     file.write(input(prompt)) 
     file.write('\n') 


print ("Hello user, this is a virtual application form" 
     "\nfor joining after-school clubs at -Insert school name here-") 

prompts = ["\n\nPlease input your first name:", 
      "Please input your last name:", 
      "Please input your gender:", 
      "Please input your form name:", 
      "What after-school club would you like to attend?\n"] 

get_info(prompts) 


print ("Thank you for taking your time to fill this virtual form" 
     "\nall the information has been stored in a file to maintain confidentiality") 

Leider ist dieses Ich nehme zu tun hatte, um aus dem first_name Anruf in das Dankeschön (letzte Druckanweisung). Wenn Sie unbedingt brauchen, dass Sie wahrscheinlich besser dran sind mit dem, was Sie bisher haben.

+0

Der Code sieht jetzt vorzeigbarer aus. Danke für Ihre Hilfe. – Hackers45

Verwandte Themen