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 | |
} | |