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