 # 1_12_maths_game_highscore_table.py

Apr 16th, 2021
621
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. # 1_12_maths_game_highscore_table.py
2. # Deal with input
3.
4. """
5. .    First, try the code with no highscores.txt file.
6. .     Does the game create the file?
7.        A. prints error message: No highscores file found
8.            and creates highscores.txt
9. .    Does the game save the name and scores correctly each time the game loops? Remember to test different scores!
10.        A.And writes names scores.
11. .    Does the high score table work as expected?
12.        A. Yes. Though I don't understand the positioning.
13. """
14.
16. scores = []
17. names = []
18.
19. try:
20.     with open("highscores.txt", "r") as f:
21.         for line in f:
22.             line = line.strip("\n")
23.             line = line.split(" ")
24.             names.append(line)
25.             scores.append(int(line))
26. except FileNotFoundError:
27.     print("No highscores file found")
28.
29. while True:
30.
31.     # display the highscores
32.     print("Highscores")
33.     for pos in range(len(names)):
34.         print(pos + 1, names[pos], scores[pos])
35.
36.     score = 0
37.     print("Welcome to the Maths Quiz")
38.     print("Can you answer three questions and score maximum points?")
39.     name = input("Whats your name? ")
40.
41.     print("Question 1: What is the product of 2x2x2?")
44.         print("Correct, That is 1 mark for you.")
45.         score = score + 1
46.     else:
47.         print("Incorrect, the answer is 8")
48.
49.     print("Question 2:  What is the product of 3x3 ? ")
52.         print("Correct, Another 1 point scored.")
53.         score = score + 1
54.     else:
55.         print("Incorrect, the answer is 9")
56.
57.     # print("Question 3: What is the quotient and remainder for 8 / 3?")
59.     print("Question 3: What is the product of 5x2 ?")
60.     """ For Text Answers >
62.    if answer == "2r2": """
65.         print("Correct, you have scored another 1 point.")
66.         score = score + 1
67.     else:
68.         print("Incorrect, the answer is 10")
69.
71.
72.     # add the new score to the highscores
73.     position = 0
74.     for compare_score in scores:
75.         if score < compare_score:
76.             position = position + 1
77.     scores.insert(position, score)
78.     names.insert(position, name)
79.
80.     scores = scores[:10]
81.     names = names[:10]
82.
83.     # output the new highscore
84.     print("Saving highscores")
85.     with open("highscores.txt", 'w') as f:
86.         for pos in range(len(names)):
87.             f.write(names[pos] + " " + str(scores[pos]) + "\n")
88.
RAW Paste Data