-
Notifications
You must be signed in to change notification settings - Fork 0
/
overhoormachine.py
83 lines (83 loc) · 3.33 KB
/
overhoormachine.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import random
import urllib.request
import json
# This function reads a list of words from a URL and filters them by category
def load_words(category):
# Open the URL and read its contents as a string
with urllib.request.urlopen('https://raw.githubusercontent.com/Marcovandervlag/Spaans_leren/main/spanish_words.json') as f:
content = f.read().decode('utf-8')
# Parse the string as a JSON object
words = json.loads(content)
# If a category was specified, filter the words to only include those in that category
if category:
words = [(w['english'], w['spanish'], w['category']) for w in words if w['category'] == category]
else:
words = [(w['english'], w['spanish'], w['category']) for w in words]
# Return the filtered words
return words
# This function prompts the user to select a category and returns their choice
def get_category():
# Define a dictionary mapping menu options to category names
options = {
'1': 'Korfball',
'2': 'Food',
'3': 'Drink',
'4': 'Hobbies',
'5': 'Greetings',
'6': 'Looks',
'7': 'Colors',
'8': 'Weather',
'9': 'Objects',
'10': 'Days',
'11': 'Months',
'12': 'vervoeging',
}
# Loop until the user selects a valid option
while True:
print("Select a category:")
# Print the menu options
for key, value in options.items():
print(f"{key}. {value}")
# Read the user's choice from the keyboard
choice = input()
# If the choice is valid, return the corresponding category name
if choice in options:
return options[choice]
# Otherwise, print an error message and loop again
print("Invalid choice, please try again.")
# This function selects a random word from a list of words
def get_word(words):
return random.choice(words)
# This function prompts the user to translate a word and returns True if the translation is correct, False otherwise
def translate(word):
english_word, spanish_word, category = word
guess = input(f"What is the Spanish word for {english_word}? ")
return guess.lower() == spanish_word.lower()
# This function plays the game, prompting the user to translate 10 random words from the specified category
def play_game(category=None):
# Load the words for the specified category (or all categories if none is specified)
words = load_words(category)
# Initialize counters for the number of correct and total answers
correct = 0
total = 0
# Loop until 10 words have been translated
while total < 10:
# Select a random word from the list
word = get_word(words)
# Prompt the user to translate the word
if translate(word):
# If the translation is correct, increment the correct counter and print a success message
print("Correct!")
correct += 1
else:
# Otherwise, print the correct translation
print(f"Incorrect. The correct answer is {word[1]}")
# Increment the total counter
total += 1
# Print the final score
print(f"Game over! You scored {correct} out of {total}.")
# This is the main entry point for the program
if __name__ == '__main__':
category = get_category()
play_game(category)
# Prompt the user to play