我正在创建算术测验,但我的代码并没有将分数写入excel中的csv文件。你能帮助我吗?我需要修理什么?
我有3个空白的csv文件,但其中没有数据。 这是我的代码......
import random#this imports random numbers
import csv#this imports a csv
score=0#this sets the score to be 0 at the start
answer=0#this sets the answer to be 0, before it is formatted with the different questions
operators=("+","-","*")#this gives three options to select from for a random operation in each question
valid=('gold','platinum','diamond')
#_______________________________________________________________________________________________________________________________
def main():
global student_name
global class_name
print("ARITHMETIC QUIZ")#this prints the title "ARITHMETIC QUIZ"
student_name=input("\nWhat is your name? ")#this asks the user to input their name
#it stores the student's name in the variable 'student_name'
class_name=input("What class are you in? ")#this asks the user to input their class name
#it also stores the class name in the variable 'class_name'
if class_name=="gold":
quitting()
elif class_name=="platinum":
quitting()
elif class_name=="diamond":
quitting()
else:
print("That is not a valid class name")
print("Please choose from 'gold', 'platinum' or 'diamond'")
class_name=input("Please enter your correct class name below: \n")
#_______________________________________________________________________________________________________________________________
def quitting():
quitting=input("\nDo you want to exit the quiz? (enter 'yes' or 'no') ")
#this asks the users if they want to exit the program.
quitting = quitting.lower().replace(' ', '')
#this converts all the characters to lower case, and it also removes and spaces
if quitting=='yes':#this checks if they wrote 'yes'
print("The program will end.")
#if they did write yes, the above line of text will be printed
exit()#and then the program will end.
else:
quiz()
#_______________________________________________________________________________________________________________________________
def quiz():
global score
for i in range(10):
#this creates a forLoop that will repeat X times, depending on the number inside the brackets
#in this case, it will repeat the following function 10 times
num1=random.randint(1,20)#this chooses a random number for the variable num1
num2=random.randint(1,20)#this chooses a random number for the variable num2
operator=random.choice(operators)#this chooses a random operation from the options of '+','-' and '*'.
if operator=="+":
answer=num1+num2#if the operator was '+', the answer would be the sum of num1 and num2
elif operator=="-":
num1,num2 = max(num1,num2), min(num1,num2)#this makes num1 larger than num2 to make subtraction easier
answer=num1-num2#else if the operator was '-', the answer would be num1 takeaway num2
elif operator=="*":
answer=num1*num2#else if the operator was a '*', the answer would be the product of num1 and num2
try:
temp=int(input("\nWhat is " + str(num1) + operator + str(num2) + "? "))#the variable temp changes for each inputted answer
#this converts the integers 'num1' and 'num2' into strings
#because integers and strings can't be in the same line of code
#this asks the user the question
if temp==answer:#this cheks if the answer is correct
print("Well Done " + student_name + "! The answer is correct.")
score=score+1
#if it is correct, it will print "Well Done! The answer is correct".
#it will also add 1 to the score
else:
print("Incorrect. The answer was " + str(answer))#this converts the variable 'answer' into a string
score=score#this makes sure that the score remains the same as last time
#if the answer is not correct, it will print "Incorrect" and output the correct answer
except ValueError:
print("Invalid answer. Please use integers only!")
#this will be printed if the user inputted anything other than an integer, like a string
print("\nThank you " + student_name + "! You scored " + str(score) + " out of 10 in this quiz.")
#this converts the variable 'score' into a string
#and this prints thank you and the student's score out of ten
#_______________________________________________________________________________________________________________________________
def find_user_in_class():
if class_name == 'gold': #if what the user's input for the class name was 'gold'...
appendFile = open('goldclassscores.csv', 'a') #it opens the csv file, named 'goldclassscores'
elif class_name == 'platinum':#if what the user's input for the class name was 'platinum'...
appendFile = open('platinumclassscores.csv', 'a')#it opens the csv file, named 'platinumclassscores'
elif class_name == 'diamond':#if what the user's input for the class name was 'diamond'...
appendFile = open('diamondclassscores.csv', 'a')#it opens the csv file, named 'diamondclassscores'
for line in appendFile: #looks through each column of the csv
user = {}
(user['student_name']) = line.split
if student_name == user['student_name']:
appendFile.close()
return (user)
appendFile.close()
return({})
#_______________________________________________________________________________________________________________________________
def write_to_csv():
if class_name == 'gold':
goldcsv = open('goldclassscores.csv', 'a')
goldcsv.write('\n')
goldcsv.write(student_name)
goldcsv.write(str(score))
goldcsv.close()
print('Your score has been saved.')
elif class_name == 'platinum':
platinumcsv = open('platinumclassscores.csv', 'a')
platinumcsv.write('\n')
platinumcsv.write(student_name)
platinumcsv.write(str(score))
platinumcsv.close()
print('Your score has been saved.')
elif class_name == 'diamond':
diamondcsv = open('diamondclassscores.csv', 'a')
diamondcsv.write('\n')
diamondcsv.write(student_name)
diamondcsv.write(str(score))
diamondcsv.close()
print('Your score has been saved.')
#_______________________________________________________________________________________________________________________________
if __name__=="__main__": main()
请帮助我!!
答案 0 :(得分:0)
您没有在任何地方调用write_to_csv()函数。测验完成后尝试调用它。