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