Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import sys
- username = password = choice = difficulty = grade = quiz = ""
- questions = []
- percentage = grade = 0
- try:
- userfile = open("users.txt","r")
- userfile.close()
- except IOError:
- userfile = open("users.txt","w")
- userfile.close()
- def Start():
- userInput = input("Do you have an account? Y or N: ")
- if userInput in ("Y","y"):
- Login()
- elif userInput in ("N","n"):
- Register()
- else:
- print("Please enter Y or N.")
- Start()
- def Register():
- global username
- global password
- name = input("Please enter your name: ")
- age = input("Please enter your age: ")
- yearGroup = input("Please enter your year group: ")
- username = name[:3] + age
- UsernameCheck()
- userfile = open("users.txt","a")
- userfile.write(username + ", ")
- userfile.close()
- userinfo = open(username + "'s info.txt","a")
- userinfo.write("username: " + username + "\n")
- userinfo.write("name: " + name + "\n")
- userinfo.write("age: " + age + "\n")
- userinfo.write("year group: " + yearGroup + "\n")
- userinfo.close()
- print("Welcome ", name, ", your username is: ", username)
- password = input("Please create a password: ")
- passwordfile = open(username + "'s password.txt","w")
- passwordfile.write(password)
- passwordfile.close()
- print("You will now be prompted to log in...")
- time.sleep(0.5)
- Login()
- def UsernameCheck():
- global username
- userfile = open("users.txt","r")
- users = []
- users = userfile.readline()
- userfile.close()
- username = username.replace("/","")
- username = username.replace(":","")
- username = username.replace("\"","")
- username = username.replace("?","")
- username = username.replace("<","")
- username = username.replace(">","")
- username = username.replace("|","")
- username = username.replace("[\]","")
- while str(username) in users:
- username = username + "1"
- def Login():
- global password
- global username
- givenUsername = input("Please enter your username: ")
- givenPassword = input("Please enter your password: ")
- if givenUsername == "Teacher":
- teacherpwfile = open("Teacher's password.txt","r")
- teacherpw = teacherpwfile.read()
- teacherpwfile.close()
- if givenPassword == teacherpw:
- Admin()
- else:
- print("Incorrect password. Please try again.")
- Login()
- try:
- passwordfile = open(givenUsername + "'s password.txt","r")
- password = passwordfile.read()
- passwordfile.close()
- except FileNotFoundError:
- print("Invalid username. Please try again.")
- Login()
- if givenPassword == password:
- print("Welcome, ", givenUsername)
- username = givenUsername
- Choice()
- else:
- print("Incorrect password. Please try again.")
- Login()
- def Choice():
- global choice
- ResultsFileCheck()
- file = open(username + "'s results.txt","r")
- check = file.read()
- file.close()
- count = check.count("Quiz")
- if str(count) == "6":
- print("You have taken every quiz. You will now be logged out.")
- Start()
- choice = input("Would you like to do a quiz on Maths or Business? ")
- while choice not in ("Maths","Business"):
- print("Please enter Maths or Business(Capital).")
- Choice()
- Difficulty()
- def Difficulty():
- global difficulty
- global choice
- global quiz
- difficulty = input("Choose a difficulty, Easy, Medium or Hard: ")
- while difficulty not in ("Easy","Medium","Hard"):
- print("Please enter Easy, Medium or Hard(Capital).")
- Difficulty()
- quiz = (choice + "Quiz" + difficulty)
- Quiz()
- def LoadQs():
- global difficulty
- global questions
- global choice
- questions = []
- questionfile = open(choice + "Qs" + difficulty + ".csv","r")
- while True:
- in_line = questionfile.readline()
- if not in_line:
- break
- questions.append(in_line)
- questionfile.close()
- def Grade():
- global percentage
- global grade
- if 0 <= percentage < 20:
- grade = "E"
- elif 20 <= percentage < 40:
- grade = "D"
- elif 40 <= percentage < 60:
- grade = "C"
- elif 60 <= percentage < 80:
- grade = "B"
- elif 80 <= percentage < 90:
- grade = "A"
- else:
- mathsgrade = "A*"
- def ResultsFileCheck():
- global results
- global username
- try:
- results = open(username + "'s results.txt","r")
- results.close()
- except IOError:
- results = open(username + "'s results.txt","w")
- results.write("Username: " + username + "\n")
- results.close()
- def Quiz():
- global quiz
- global choice
- global difficulty
- global score
- global percentage
- global grade
- global username
- global questions
- ResultsFileCheck()
- file = open(username + "'s results.txt","r")
- check = file.read()
- file.close
- if ("Quiz: " + choice + " Difficulty: " + difficulty) in check:
- print("You have already taken this quiz.")
- Choice()
- results = open(username + "'s results.txt","a")
- results.write("Quiz: " + choice + " Difficulty: " + difficulty)
- LoadQs()
- score = 0
- count = 0
- for line in questions:
- inputs = line.split(",")
- question = inputs[0]
- a = inputs[1]
- b = inputs[2]
- if "correct" in a:
- a = a.replace("correct","")
- answer = ["A","a"]
- answer2 = a
- else:
- b = b.replace("correct","")
- answer = ["B","b"]
- answer2 = b
- if difficulty == "Easy":
- question = (question + " Is it A: " + a + " or B: " + b)
- correctinputs = ["A","a","B","b"]
- invalidinput = ("Please enter A or B.")
- try:
- c = inputs[3]
- if "correct" in c:
- c = c.replace("correct","")
- answer = ["C","c"]
- answer2 = c
- if difficulty == "Medium":
- question = (question + " Is it A: " + a + ", B: " + b + " or C: " + c)
- correctinputs = ["A","a","B","b","C","c"]
- invalidinput = ("Please enter A, B or C.")
- except IndexError:
- pass
- try:
- d = inputs[4]
- if "correct" in d:
- d = d.replace("correct","")
- answer = ["D","d"]
- answer2 = d
- if difficulty == "Hard":
- question = (question + " Is it A: " + a + ", B: " + b + ", C: " + c + " or D: " + d)
- correctinputs = ["A","a","B","b","C","c","D","d"]
- invalidinput = ("Please enter A, B, C or D.")
- except IndexError:
- pass
- userAnswer = input(question)
- while userAnswer not in correctinputs:
- print(invalidinput)
- userAnswer = input(question)
- if userAnswer in answer:
- print("Correct!")
- results.write("\nQuestion: " + question + "Answer: " + str(userAnswer) + " - Correct")
- score = score + 1
- count = count + 1
- else:
- print("Sorry, the answer was: ", answer2)
- count = count + 1
- results.write("\nQuestion: " + question + "Answer: " + str(userAnswer) + " - Incorrect")
- print("Your final score is: ", score)
- percentage = score / count
- percentage = percentage * 100
- totalscore = 0
- totalscore = totalscore + score
- scorecount = 0
- scorecount = scorecount + 1
- avgscore = totalscore / scorecount
- print("Your percentage is: ", percentage, "%")
- Grade()
- print("Your grade is: ", grade)
- try:
- quizresults = open(quiz + " - Results.txt","a")
- quizresults.write(username + ": " + str(score) + "\n")
- quizresults.close()
- except IOError:
- quizresults = open(quiz + " - Results.txt","w")
- quizresults.write(username + ": " + str(score) + "\n")
- quizresults.close()
- results.write("\nFinal score: " + str(score) + "\n")
- results.write("Grade: " + str(grade) + "\n********************\n")
- results.close()
- average = open(quiz + " - Average Score.txt","w")
- average.write(str(avgscore))
- average.close()
- Continue()
- def Continue():
- ResultsFileCheck()
- check = open(username + "'s results.txt","r")
- check.read()
- check.close()
- check = str(check)
- count = check.count("Quiz")
- if str(count) == "6":
- print("You have taken every quiz. You will now be logged out.")
- Start()
- print("If you would like to do another quiz, press C.")
- print("If you would like to log out, press E.")
- print("If you would like to quit, press Q.")
- userInput = input("Please choose one of the above options to continue: ")
- while userInput not in ["C","c","E","e","Q","q"]:
- userInput = input("Please enter C, E or Q: ")
- if userInput in ["Q","q"]:
- sys.exit()
- elif userInput in ["E","e"]:
- Start()
- else:
- Choice()
- def Admin():
- global users
- choice = input("Would you like to check a student's results? Y or N: ")
- if choice in ("Y","y"):
- UserReport()
- elif choice in ("N","n"):
- choice2 = input("Would you like to check the results for a quiz? Y or N: ")
- while choice2 not in ("Y","y","N","n"):
- choice2 = input("Please enter Y or N: ")
- if choice2 in ("Y","y"):
- QuizReport()
- else:
- choice3 = input("Press E to log out, or Q to quit: ")
- while choice3 not in ("E","e","Q","q"):
- choice3 = input("Please enter E or Q.")
- if choice3 in ("E","e"):
- Start()
- else:
- sys.exit()
- else:
- print("Please enter Y or N.")
- Admin()
- def UserReport():
- userfile = ""
- users = []
- with open("users.txt","r") as userfile:
- users = userfile.readline()
- user = input("Please enter their username: ")
- while user not in users:
- print("The username you entered does not exist. Please try again.")
- user = input("Please enter their username: ")
- try:
- report = open(user + "'s results.txt","r")
- results = report.read()
- report.close()
- print(results)
- AdminContinue()
- except IOError:
- print("This user has not completed any quizzes.")
- Admin()
- def QuizReport():
- quiz = input("Choose a quiz, Maths or Business: ")
- while quiz not in ("Maths","Business"):
- quiz = input("Please enter Maths or Business(Capital): ")
- difficulty = input("Choose a difficulty, Easy, Medium or Hard: ")
- while difficulty not in ("Easy","Medium","Hard"):
- difficulty = input("Please enter Easy, Medium or Hard(Capital): ")
- try:
- quizresults = open(quiz + "Quiz" + difficulty + " - Results.txt","r")
- average = open(quiz + "Quiz" + difficulty + " - Average Score.txt","r")
- except IOError:
- print("No one has taken this quiz yet.")
- QuizReport()
- avgscore = average.read()
- average.close()
- print("Average Score: " + avgscore)
- student_list = []
- score_list = []
- for line in quizresults:
- lines = line.split(": ")
- student = lines[0]
- score = int(lines[1])
- student_list.append(student)
- score_list.append(score)
- quizresults.close()
- top_score = max(score_list)
- top_student = student_list[score_list.index(top_score)]
- print(top_student + " achieved " + str(top_score) + ", the highest score.")
- details = open(top_student + "'s info.txt","r")
- userinfo = details.read()
- details.close()
- print("The details of this user are:")
- print(userinfo)
- AdminContinue()
- def AdminContinue():
- print("If you would like to check a student's results, press S.")
- print("If you would like to check the results for a quiz, press R.")
- print("If you would like to log out, press E.")
- print("If you would like to quit, press Q")
- choice = input("Please choose one of the above options to continue: ")
- while choice not in ["S","s","R","r","E","e","Q","q"]:
- choice = input("Please enter S, R, E or Q: ")
- if choice in ["S","s"]:
- UserReport()
- elif choice in ["R","r"]:
- QuizReport()
- elif choice in ["E","e"]:
- Start()
- else:
- sys.exit()
- Start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement