I have done this quiz project and I have tried as hard as I could when I was writing to make it user friendly to read. Could you help me on improving and making it more user friendly please.
import random
import operator
import csv
OPERATIONS = [
(operator.add, "+"),
(operator.mul, "*"),
(operator.sub, "-")
]
NB_QUESTIONS = 10
def get_int_input(prompt=''):
while True:
try:
return int(input(prompt))
except ValueError:
print("Not a valid input (integer is expected)")
def get_bool_input(prompt=''):
while True:
val = input(prompt).lower()
if val == 'yes':
return True
elif val == 'no':
return False
else:
print("Not a valid input (yes/no is expected)")
if __name__ == '__main__':
name = input("What is your name?").title()
print(name, ", Welcome to the OCR Controlled Assessment Maths Test")
score = 0
for _ in range(NB_QUESTIONS):
num1 = random.randint(1,11)
num2 = random.randint(1,11)
op, symbol = random.choice(OPERATIONS)
print("What is", num1, symbol, num2)
if get_int_input() == op(num1, num2):
print("Correct")
score += 1
else:
print("Incorrect")
print("Well done", name, "you scored", score, "/", NB_QUESTIONS)
print("Are you in class 7, 8 or 9")
student_class = int(input())
if student_class>9:
print("This is not a class")
student_class = int(input())
if student_class<7:
print("This is not a class")
student_class = int(input())
if student_class == 7:
print('Enter your score for test 2')
test2 = int(input())
print('Enter your score for test 3')
test3 = int(input())
with open('class7.csv', 'a', newline='') as fp:
a = csv.writer(fp,delimiter=',')
data=[[name,score,test2,test3]]
a.writerows(data)
print("Your score has been saved")
f = open('class7.csv')
csv_f = csv.reader(f)
newlist = []
for row in csv_f:
row[1] = int(row[1])
row[2] = int(row[2])
row[3] = int(row[3])
minimum = min(row[1:4])
row.append(minimum)
maximum = max(row[1:4])
row.append(maximum)
average = round(sum(row[1:4])/3)
row.append(average)
newlist.append(row[0:7])
alphabetical = [[x[0], x[5]] for x in newlist]
for entry in sorted(alphabetical):
print(entry)
Highscore = [[x[5], x[0]]for x in newlist]
print('Highest scores')
for entry in sorted(Highscore, reverse = True) :
print(entry)
averagescore = [[x[6], x[0]] for x in newlist]
print('Average scores')
for entry in sorted(averagescore, reverse = True) :
print(entry)
if student_class == 8:
print('Enter your score for test 2')
test2 = int(input())
print('Enter your score for test 3')
test3 = int(input())
with open('class8.csv','a',newline='') as fp:
a = csv.writer(fp,delimiter=',')
data=[[name,score,test2,test3]]
a.writerows(data)
print("Your score has been saved")
f = open('class8.csv')
csv_f = csv.reader(f)
newlist = []
for row in csv_f:
row[1] = int(row[1])
row[2] = int(row[2])
row[3] = int(row[3])
minimum = min(row[1:4])
row.append(minimum)
maximum = max(row[1:4])
row.append(maximum)
average = round(sum(row[1:4])/3)
row.append(average)
newlist.append(row[0:7])
alphabetical = [[x[0], x[5]] for x in newlist]
for entry in sorted(alphabetical):
print(entry)
Highscore = [[x[5], x[0]]for x in newlist]
print('Highest scores')
for entry in sorted(Highscore, reverse = True) :
print(entry)
averagescore = [[x[6], x[0]] for x in newlist]
print('Average scores')
for entry in sorted(averagescore, reverse = True) :
print(entry)
if student_class == 9:
print('Enter your score for test 2')
test2 = int(input())
print('Enter your score for test 3')
test3 = int(input())
with open('class9.csv','a',newline='') as fp:
a = csv.writer(fp, delimiter=',')
data=[[name,score,test2,test3]]
a.writerows(data)
print("Your score has been saved")
f = open('class9.csv')
csv_f = csv.reader(f)
newlist = []
for row in csv_f:
row[1] = int(row[1])
row[2] = int(row[2])
row[3] = int(row[3])
minimum = min(row[1:4])
row.append(minimum)
maximum = max(row[1:4])
row.append(maximum)
average = round(sum(row[1:4])/3)
row.append(average)
newlist.append(row[0:7])
alphabetical = [[x[0], x[5]] for x in newlist]
for entry in sorted(alphabetical):
print(entry)
Highscore = [[x[5], x[0]]for x in newlist]
print('Highest scores')
for entry in sorted(Highscore, reverse = True) :
print(entry)
averagescore = [[x[6], x[0]] for x in newlist]
print('Average scores')
for entry in sorted(averagescore, reverse = True) :
print(entry)