math / modules /conversion_bases.py
Sina Media Lab
Updates
984a89c
raw
history blame
1.48 kB
import random
def generate_question():
base_from = random.choice([2, 8, 10, 16])
base_to = random.choice([2, 8, 10, 16])
number = random.randint(1, 255)
if base_from == 10:
number_rep = str(number)
elif base_from == 2:
number_rep = bin(number)[2:]
elif base_from == 8:
number_rep = oct(number)[2:]
elif base_from == 16:
number_rep = hex(number)[2:].upper()
if base_to == 10:
correct_answer = str(int(number_rep, base_from))
elif base_to == 2:
correct_answer = bin(int(number_rep, base_from))[2:]
elif base_to == 8:
correct_answer = oct(int(number_rep, base_from))[2:]
elif base_to == 16:
correct_answer = hex(int(number_rep, base_from))[2:].upper()
steps = [
f"Convert the number {number_rep} from base {base_from} to decimal.",
f"Result: {int(number_rep, base_from)} in decimal.",
f"Now, convert {int(number_rep, base_from)} from decimal to base {base_to}.",
f"Final result: {correct_answer}."
]
question_data = {
"question": f"Convert the number {number_rep} from base {base_from} to base {base_to}.",
"options": [correct_answer] + [str(random.randint(1, 255)) for _ in range(3)],
"correct_answer": correct_answer,
"explanation": f"The number {number_rep} in base {base_from} is {correct_answer} in base {base_to}.",
"step_by_step_solution": steps
}
return question_data