Advertisement
Guest User

quiz

a guest
Oct 30th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.48 KB | None | 0 0
  1. import time
  2. import sys
  3. username = password = choice = difficulty = grade = quiz = ""
  4. questions = []
  5. percentage = grade = 0
  6.  
  7. try:
  8.     userfile = open("users.txt","r")
  9.     userfile.close()
  10. except IOError:
  11.     userfile = open("users.txt","w")
  12.     userfile.close()
  13.  
  14. def Start():
  15.     userInput = input("Do you have an account? Y or N: ")
  16.     if userInput in ("Y","y"):
  17.         Login()
  18.     elif userInput in ("N","n"):
  19.         Register()
  20.     else:
  21.         print("Please enter Y or N.")
  22.         Start()
  23.  
  24. def Register():
  25.     global username
  26.     global password
  27.     name = input("Please enter your name: ")
  28.     age = input("Please enter your age: ")
  29.     yearGroup = input("Please enter your year group: ")
  30.     username = name[:3] + age
  31.     UsernameCheck()
  32.     userfile = open("users.txt","a")
  33.     userfile.write(username + ", ")
  34.     userfile.close()
  35.     userinfo = open(username + "'s info.txt","a")
  36.     userinfo.write("username: " + username + "\n")
  37.     userinfo.write("name: " + name + "\n")
  38.     userinfo.write("age: " + age + "\n")
  39.     userinfo.write("year group: " + yearGroup + "\n")
  40.     userinfo.close()
  41.     print("Welcome ", name, ", your username is: ", username)
  42.     password = input("Please create a password: ")
  43.     passwordfile = open(username + "'s password.txt","w")
  44.     passwordfile.write(password)
  45.     passwordfile.close()
  46.     print("You will now be prompted to log in...")
  47.     time.sleep(0.5)
  48.     Login()
  49.  
  50. def UsernameCheck():
  51.     global username
  52.     userfile = open("users.txt","r")
  53.     users = []
  54.     users = userfile.readline()
  55.     userfile.close()
  56.     username = username.replace("/","")
  57.     username = username.replace(":","")
  58.     username = username.replace("\"","")
  59.     username = username.replace("?","")
  60.     username = username.replace("<","")
  61.     username = username.replace(">","")
  62.     username = username.replace("|","")
  63.     username = username.replace("[\]","")
  64.     while str(username) in users:
  65.         username = username + "1"
  66.    
  67. def Login():
  68.     global password
  69.     global username
  70.     givenUsername = input("Please enter your username: ")
  71.     givenPassword = input("Please enter your password: ")
  72.     if givenUsername == "Teacher":
  73.         teacherpwfile = open("Teacher's password.txt","r")
  74.         teacherpw = teacherpwfile.read()
  75.         teacherpwfile.close()
  76.         if givenPassword == teacherpw:
  77.             Admin()
  78.         else:
  79.             print("Incorrect password. Please try again.")
  80.             Login()
  81.     try:
  82.         passwordfile = open(givenUsername + "'s password.txt","r")
  83.         password = passwordfile.read()
  84.         passwordfile.close()
  85.     except FileNotFoundError:
  86.         print("Invalid username. Please try again.")
  87.         Login()
  88.     if givenPassword == password:
  89.         print("Welcome, ", givenUsername)
  90.         username = givenUsername
  91.         Choice()
  92.     else:
  93.         print("Incorrect password. Please try again.")
  94.         Login()
  95.        
  96. def Choice():
  97.     global choice
  98.     ResultsFileCheck()
  99.     file = open(username + "'s results.txt","r")
  100.     check = file.read()
  101.     file.close()
  102.     count = check.count("Quiz")
  103.     if str(count) == "6":
  104.         print("You have taken every quiz. You will now be logged out.")
  105.         Start()
  106.     choice = input("Would you like to do a quiz on Maths or Business? ")
  107.     while choice not in ("Maths","Business"):
  108.         print("Please enter Maths or Business(Capital).")
  109.         Choice()
  110.     Difficulty()
  111.        
  112. def Difficulty():
  113.     global difficulty
  114.     global choice
  115.     global quiz
  116.     difficulty = input("Choose a difficulty, Easy, Medium or Hard: ")
  117.     while difficulty not in ("Easy","Medium","Hard"):
  118.         print("Please enter Easy, Medium or Hard(Capital).")
  119.         Difficulty()
  120.     quiz = (choice + "Quiz" + difficulty)
  121.     Quiz()
  122.  
  123. def LoadQs():
  124.     global difficulty
  125.     global questions
  126.     global choice
  127.     questions = []
  128.     questionfile = open(choice + "Qs" + difficulty + ".csv","r")
  129.     while True:
  130.         in_line = questionfile.readline()
  131.         if not in_line:
  132.             break
  133.         questions.append(in_line)
  134.     questionfile.close()
  135.  
  136. def Grade():
  137.     global percentage
  138.     global grade
  139.     if 0 <= percentage < 20:
  140.         grade = "E"
  141.     elif 20 <= percentage < 40:
  142.         grade = "D"
  143.     elif 40 <= percentage < 60:
  144.         grade = "C"
  145.     elif 60 <= percentage < 80:
  146.         grade = "B"
  147.     elif 80 <= percentage < 90:
  148.         grade = "A"
  149.     else:
  150.         mathsgrade = "A*"
  151.  
  152. def ResultsFileCheck():
  153.     global results
  154.     global username
  155.     try:
  156.         results = open(username + "'s results.txt","r")
  157.         results.close()
  158.     except IOError:
  159.         results = open(username + "'s results.txt","w")
  160.         results.write("Username: " + username + "\n")
  161.         results.close()
  162.  
  163. def Quiz():
  164.     global quiz
  165.     global choice
  166.     global difficulty
  167.     global score
  168.     global percentage
  169.     global grade
  170.     global username
  171.     global questions
  172.     ResultsFileCheck()
  173.     file = open(username + "'s results.txt","r")
  174.     check = file.read()
  175.     file.close
  176.     if ("Quiz: " + choice + "Difficulty: " + difficulty) in check:
  177.         print("You have already taken this quiz.")
  178.         Choice()
  179.     results = open(username + "'s results.txt","a")
  180.     results.write("Quiz: " + choice + "Difficulty: " + difficulty)
  181.     LoadQs()
  182.     score = 0
  183.     count = 0
  184.     for line in questions:
  185.         inputs = line.split(",")
  186.         question = inputs[0]
  187.         a = inputs[1]
  188.         b = inputs[2]
  189.         if "correct" in a:
  190.             a = a.replace("correct","")
  191.             answer = ["A","a"]
  192.             answer2 = a
  193.         else:
  194.             b = b.replace("correct","")
  195.             answer = ["B","b"]
  196.             answer2 = b
  197.         try:
  198.             c = inputs[3]
  199.         except IndexError:
  200.             pass
  201.         try:
  202.             d = inputs[4]
  203.         except IndexError:
  204.             pass
  205.         try:
  206.             if "correct" in c:
  207.                 c = c.replace("correct","")
  208.                 answer = ["C","c"]
  209.                 answer2 = c
  210.             if difficulty == "Medium":
  211.                 question = (question + " Is it A: " + a + ", B: " + b + " or C: " + c)
  212.                 correctinputs = ["A","a","B","b","C","c"]
  213.                 invalidinput = ("Please enter A, B or C.")
  214.         except NameError:
  215.             pass
  216.         try:
  217.             if "correct" in d:
  218.                 d = d.replace("correct","")
  219.                 answer = ["D","d"]
  220.                 answer2 = d
  221.             if difficulty == "Hard":
  222.                 question = (question + " Is it A: " + a + ", B: " + b + ", C: " + c + " or D: " + d)
  223.                 correctinputs = ["A","a","B","b","C","c","D","d"]
  224.                 invalidinput = ("Please enter A, B, C or D.")
  225.         except NameError:
  226.             pass
  227.         question2 = (question + " Is it A: " + a + " or B: " + b)
  228.         correctinputs = ["A","a","B","b"]
  229.         invalidinput = ("Please enter A or B.")
  230.         userAnswer = input(question)
  231.         while userAnswer not in correctinputs:
  232.             print(invalidinput)
  233.             userAnswer = input(question)
  234.         if userAnswer in answer:
  235.             print("Correct!")
  236.             results.write("\nQuestion: " + question + "Answer: " + str(userAnswer) + " - Correct")
  237.             score = score + 1
  238.             count = count + 1
  239.         else:
  240.             print("Sorry, the answer was: ", answer2)
  241.             count = count + 1
  242.             results.write("\nQuestion: " + question + "Answer: " + str(userAnswer) + " - Incorrect")
  243.     print("Your final score is: ", score)
  244.     percentage = score / count
  245.     percentage = percentage * 100
  246.     totalscore = totalscore + score
  247.     scorecount = scorecount + 1
  248.     avgscore = totalscore / scorecount
  249.     print("Your percentage is: ", percentage, "%")
  250.     Grade()
  251.     print("Your grade is: ", grade)
  252.     try:
  253.         quizresults = open(quiz + " - Results.txt","a")
  254.         quizresults.write(username + ": " + str(score) + "\n")
  255.         quizresults.close()
  256.     except IOError:
  257.         quizresults = open(quiz + " - Results.txt","w")
  258.         quizresults.write(username + ": " + str(score) + "\n")
  259.         quizresults.close()
  260.     results.write("\nFinal score: " + str(score) + "\n")
  261.     results.write("Grade: " + str(grade) + "\n********************\n")
  262.     results.close()
  263.     average = open(quiz + " - Average Score.txt","w")
  264.     average.write(str(avgscore))
  265.     average.close()
  266.     Continue()
  267.  
  268. def Continue():
  269.     ResultsFileCheck()
  270.     check = open(username + "'s results.txt","r")
  271.     check.read()
  272.     check.close()
  273.     check = str(check)
  274.     count = check.count("Quiz")
  275.     if str(count) == "6":
  276.         print("You have taken every quiz. You will now be logged out.")
  277.         Start()
  278.     print("If you would like to do another quiz, press C.")
  279.     print("If you would like to log out, press E.")
  280.     print("If you would like to quit, press Q.")
  281.     userInput = input("Please choose one of the above options to continue: ")
  282.     while userInput not in ["C","c","E","e","Q","q"]:
  283.         userInput = input("Please enter C, E or Q: ")
  284.     if userInput in ["Q","q"]:
  285.         sys.exit()
  286.     elif userInput in ["E","e"]:
  287.         Start()
  288.     else:
  289.         Choice()
  290.  
  291. def Admin():
  292.     global users
  293.     choice = input("Would you like to check a student's results? Y or N: ")
  294.     if choice in ("Y","y"):
  295.        UserReport()
  296.     elif choice in ("N","n"):
  297.         choice2 = input("Would you like to check the results for a quiz? Y or N: ")
  298.         while choice2 not in ("Y","y","N","n"):
  299.             choice2 = input("Please enter Y or N: ")
  300.         if choice2 in ("Y","y"):
  301.             QuizReport()
  302.         else:
  303.             choice3 = input("Press E to log out, or Q to quit: ")
  304.             while choice3 not in ("E","e","Q","q"):
  305.                 choice3 = input("Please enter E or Q.")
  306.             if choice3 in ("E","e"):
  307.                 Start()
  308.             else:
  309.                 sys.exit()
  310.  
  311.     else:
  312.         print("Please enter Y or N.")
  313.         Admin()
  314.  
  315. def UserReport():
  316.     user = input("Please enter their username: ")
  317.     while user not in users:
  318.         print("The username you entered does not exist. Please try again.")
  319.         user = input("Please enter their username: ")
  320.     try:
  321.         report = open(user + "'s results.txt","r")
  322.         results = report.read()
  323.         report.close()
  324.         print(results)
  325.         AdminContinue()
  326.     except IOError:
  327.         print("This user has not completed any quizzes.")
  328.         UserReport()
  329.  
  330. def QuizReport():
  331.     quiz = input("Choose a quiz, Maths or Business: ")
  332.     while quiz not in ("Maths","Business"):
  333.         quiz = input("Please enter Maths or Business(Capital): ")
  334.     difficulty = input("Choose a difficulty, Easy, Medium or Hard: ")
  335.     while difficulty not in ("Easy","Medium","Hard"):
  336.             difficulty = input("Please enter Easy, Medium or Hard(Capital): ")
  337.     try:
  338.         quizresults = open(quiz + "Quiz" + difficulty + " - Results.txt","r")
  339.         average = open(quiz + "Quiz" + difficulty + " - Average Score.txt","r")
  340.     except IOError:
  341.         print("No one has taken this quiz yet.")
  342.         QuizReport()
  343.     avgscore = average.read()
  344.     average.close()
  345.     print("Average Score: " + avgscore)
  346.     student_list = []
  347.     score_list = []
  348.     for line in quizresults:
  349.         lines = line.split(": ")
  350.         student = lines[0]
  351.         score = int(lines[1])
  352.         student_list.append(student)
  353.         score_list.append(score)
  354.     quizresults.close()
  355.     top_score = max(score_list)
  356.     top_student = student_list[score_list.index(top_score)]
  357.     print(top_student + " achieved " + str(top_score) + ", the highest score.")
  358.     details = open(top_student + "'s info.txt","r")
  359.     userinfo = details.read()
  360.     details.close()
  361.     print("The details of this user are:")
  362.     print(userinfo)
  363.     AdminContinue()
  364.            
  365. def AdminContinue():
  366.     print("If you would like to check a student's results, press S.")
  367.     print("If you would like to check the results for a quiz, press R.")
  368.     print("If you would like to log out, press E.")
  369.     print("If you would like to quit, press Q")
  370.     choice = input("Please choose one of the above options to continue: ")
  371.     while choice not in ["S","s","R","r","E","e","Q","q"]:
  372.         choice = input("Please enter S, R, E or Q: ")
  373.     if choice in ["S","s"]:
  374.         UserReport()
  375.     elif choice in ["R","r"]:
  376.         QuizReport()
  377.     elif choice in ["E","e"]:
  378.         Start()
  379.     else:
  380.         sys.exit()
  381.        
  382. Start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement