Anfügen von Variablen an Textdatei funktioniert nicht in Python

Ich versuche, mein Programm zu bekommen, um zwei Variablen zu einer Textdatei auszugeben, nachdem es beendet läuft, aber alles, was ich bekomme, ist der Ordner und keine Textdateien darin drin. Hier ist der Code in Frage:

Ich habe bearbeitet, um das gesamte Programm einzuschließen.

import random #needed for the random question creation import os #needed for when the scores will be appended to a text file #import csv #work in progress answer = 0 #just to ensure a strage error isn't created by the input validation (since converting to a global variable isn't really needed) global questionnumber #sets the question number to be a global variable so that questionnumber = 0 global score score = 0 global name name = "a" def check_input(user_input): #used to verify that input by user is a valid number try: #the condition that does the checking answer = int (user_input) except ValueError: #what to do if the number isn't actually a number return fail() #calls the failure message return answer #sends the answer back to the rest of the program def fail(): #the failure message procedure defined print("That isn't a whole number! Try again with a different question") #tells the user what's going on global questionnumber #calls the global variable for this procedure questionnumber = questionnumber - 1 #allows the user, who made a mistake, a second chance to get it right def questions(): #the question procedure defined global name name=input("Enter your name: ") #gets the user's name for logging and also outputting messages to them print("Hello there",name,"! Please answer 10 random maths questions for this test!") #outputs welcome message to the user ClassOfStudent=input("Which class are you in?") #gets the user's class for logging finish = False while finish == False: #only occurs if "finish" isn't set to true so that the questions asked don't exceed ten global questionnumber #calls the global variable global score choice = random.choice("+-x") #uses the random function to choose the operator if questionnumber < 10 | questionnumber >= 0: #validation to ensure the question number is within ten number1 = random.randrange(1,12) #uses random numbers from the random function, above 1 and below 12 number2 = random.randrange(1,12) #same as the abovem for the second number print((number1),(choice),(number2)) #outputs the sum for the student to answer answer=check_input((input("What is the answer?"))) #asks for the student's answer questionnumber = questionnumber + 1 #adds one to the numebvr of questions asked if choice==("+"): #if the ramdomly generated operator was plus correctanswer = number1+number2 #operator is used with the numbers to work out the right answer if answer==correctanswer: #checks the studen't answer is right print("That's the correct answer") #if it is, it tells the student score = score + 1 #adds one to the score that the user has else: print("Wrong answer, the answer was",correctanswer,"!") #if the answer is wrong, it tells the student and doesn't add one to the score if choice==("x"): #essentially the same as the addition, but with a multiplicatin operator instead correctanswer = number1*number2 if answer==correctanswer: print("That's the correct answer") score = score + 1 else: print("Wrong answer, the answer was",correctanswer,"!") elif choice==("-"): #essentially the same as the addition, but with a subtraction operator instead correctanswer = number1-number2 if answer==correctanswer: print("That's the correct answer") score = score + 1 else: print("Wrong answer, the answer was",correctanswer,"!") else: #if the number of questions asked is ten, it goes on to end the program finish = True else: print("Good job",name,"! You have finished the quiz") #outputs a message to the user to tell them that they've finished the quiz print("You scored " + str(score) + "/10 questions.") #ouputs the user's score to let them know how well they've done #all below here is a work in progress #Create a new directory for the scores to go in, if it is not there already. if os.path.exists("Scores") == False: os.mkdir("Scores") os.chdir("Scores") if ClassOfStudent==1: #write scores to class 1 text file_var = open("Class 1.txt",'w+') file_var.write("name, score") file_var.close() if ClassOfStudent==2: #write score to class 2 text file_var = open("Class 2.txt",'w+') file_var.write(name, score) file_var.close() if ClassOfStudent==3: #write score to class 3 text file_var = open("Class 3.txt",'w+') file_var.write(name, score) file_var.close() questions() 

3 Solutions collect form web for “Anfügen von Variablen an Textdatei funktioniert nicht in Python”

Verwenden Sie print(repr(ClassOfStudent)) , um den Wert print(repr(ClassOfStudent)) und geben Sie print(repr(ClassOfStudent)) :

 >>> ClassOfStudent = input("Which class are you in?") Which class are you in?2 >>> print(repr(ClassOfStudent)) '2' 

Mit input() in Python 3 wird der Wert als String gelesen. Du musst es entweder in einen int umwandeln oder den Vergleich gegen einen String machen.

 ClassOfStudent = int(input("Which class are you in?") 

Sollte dein Problem beheben

ClassOfStudent ist eine Zeichenfolge anstatt einer Zahl, so dass keiner der Code, der in die Datei schreibt, ausgeführt wird. Sie können leicht überprüfen, dass durch Hinzufügen einer print Anweisung unter jedem, if Sie so sehen können, wenn dieser Code ausgeführt wird.

Die Lösung besteht darin, mit Strings zu vergleichen oder ClassOfStudent zu einem i teger zu konvertieren.

Zuerst hast du ein Problem mit dem "". Sie müssen folgendes korrigieren:

 if ClassOfStudent==2: #write scores to class 1 text file_var = open("Class 2.txt",'w+') file_var.write("name, score") file_var.close() if ClassOfStudent==3: #write scores to class 1 text file_var = open("Class 3.txt",'w+') file_var.write("name, score") file_var.close() 

Beachten Sie, dass ich das "" im Inneren des Schreibens hinzugefügt habe. In jedem Fall denke ich, was du willst, ist so etwas wie: file_var.write ("name% s, score% s"% (name, score)). Das sollte angemessener sein.

  • Mehrere JSON Items Python abrufen
  • Python 3.5 OpenSSL Fehler
  • Struct.Error, muss ein Bytes-Objekt sein?
  • Erhalten Sie den Wert des letzten Ausdrucks im `exec`-Aufruf
  • Umwandlung einer Renditeanweisung in einen Generatorausdruck in Python
  • Unterklassen von Datei durch Unterklassen `io.TextIOWrapper` - aber welche Unterschrift hat der Konstruktor?
  • Python 3.3 Socket Programmierfehler
  • Animieren eines bewegten Punktes
  • Wie schließe ich in die entgegengesetzte Reihenfolge?
  • Kann ich verhindern, dass numpy.array die Elemente als numpy Arrays wirft?
  • Prime Generator in Python
  • Python ist die beste Programmiersprache der Welt.