Spaces:
Runtime error
Runtime error
| import random | |
| from typing import Literal | |
| def generate_question_answer_pair(level: Literal["easy", "medium", "hard"] = "easy"): | |
| """generate question and correct answer to it | |
| :param mode: number we add to current number to get an outcome | |
| :param current_number: current number we are counting up from | |
| :param ordinal_number: the number we count up by""" | |
| numbers = generate_numbers_by_level(level) | |
| current_number = numbers['current_number'] | |
| ordinal_number = numbers['ordinal_number'] | |
| times = numbers['times'] | |
| proper_outcome = current_number + ordinal_number * times | |
| question_data = [ | |
| { | |
| "question": f"Let's practice counting. After {current_number}, what number is next?", | |
| "current_number": current_number, | |
| "ordinal_number": ordinal_number, | |
| "answer": current_number + 1 | |
| }, | |
| { | |
| "question": f"What number comes {ordinal_number} number after {current_number}?", | |
| "current_number": current_number, | |
| "ordinal_number": ordinal_number, | |
| "answer": current_number + ordinal_number | |
| }, | |
| { | |
| "question": f"We're counting up by {times}s. What number is {ordinal_number} after {current_number}?", | |
| "current_number": current_number, | |
| "ordinal_number": ordinal_number, | |
| "times": times, | |
| "answer": proper_outcome | |
| }, | |
| { | |
| "question": f"If we count up {ordinal_number} from {current_number}, what number is next?", | |
| "current_number": current_number, | |
| "ordinal_number": ordinal_number, | |
| "answer": current_number + ordinal_number | |
| }, | |
| { | |
| "question": f"Let's count up by {ordinal_number}s. What number is next if we start from {current_number}", | |
| "current_number": current_number, | |
| "ordinal_number": ordinal_number, | |
| "answer": current_number + ordinal_number | |
| } | |
| ] | |
| random_choice = random.choice(question_data) | |
| return random_choice | |
| def generate_numbers_by_level(level: Literal["easy", "medium", "hard"] = "easy"): | |
| """generate current number, ordinal number and times parameter | |
| returns | |
| dict with params: | |
| :param current_number: current number | |
| :param ordinal numebr: the number we count up by | |
| :param times: the number of times we count up by ordinal number""" | |
| if level == "easy": | |
| current_number = random.randint(1, 8) | |
| ordinal_number = random.randint(1, 2) | |
| times = 1 | |
| elif level == "medium": | |
| current_number = random.randint(1, 90) | |
| ordinal_number = random.randint(1, 5) | |
| times = random.randint(1, 2) | |
| elif level == "hard": | |
| current_number = random.randint(1, 425) | |
| ordinal_number = random.randint(1, 25) | |
| times = random.randint(1, 3) | |
| return { | |
| "current_number": current_number, | |
| "ordinal_number": ordinal_number, | |
| "times": times | |
| } | |