import random # Levels definition # Targeting ages 9-10 def generate_question(level: int) -> tuple[str, int]: """ Returns (question_string, correct_answer) for the given level. Levels: 1 - Addition (numbers 1-30) 2 - Subtraction (result always positive, numbers 1-30) 3 - Multiplication tables (2 to 9) 4 - Mixed bag (all of the above) """ if level == 1: a = random.randint(1, 30) b = random.randint(1, 30) return f"{a} + {b}", a + b elif level == 2: a = random.randint(1, 30) b = random.randint(1, a) return f"{a} - {b}", a - b elif level == 3: a = random.randint(2, 9) b = random.randint(2, 9) return f"{a} × {b}", a * b else: # level 4 — mixed op = random.choice(["add", "sub", "mul"]) if op == "add": a = random.randint(10, 50) b = random.randint(10, 50) return f"{a} + {b}", a + b elif op == "sub": a = random.randint(10, 50) b = random.randint(1, a) return f"{a} - {b}", a - b else: a = random.randint(2, 12) b = random.randint(2, 12) return f"{a} × {b}", a * b LEVEL_NAMES = { 1: "➕ Additions", 2: "➖ Subtractions", 3: "✖️ Multiplications", 4: "🎲 Mix", } LEVEL_THRESHOLDS = {1: 5, 2: 5, 3: 5, 4: 999} def level_up_message(level: int) -> str: messages = { 2: "🎉 Next level!", 3: "🌟 Multiplications!", 4: "🏆 Expert mode!", } return messages.get(level, "")