Sina Media Lab commited on
Commit
84a97d9
·
1 Parent(s): ff3311b
Files changed (1) hide show
  1. modules/conversion_bases.py +9 -9
modules/conversion_bases.py CHANGED
@@ -16,24 +16,24 @@ def generate_question():
16
 
17
  def convert_number(number, from_base, to_base):
18
  # Convert from `from_base` to base 10 using Python's built-in `int`
19
- base_10 = int(number, from_base)
20
  # Convert from base 10 to `to_base` using Python's built-in methods
21
  if to_base == 10:
22
- return str(base_10)
23
  elif to_base == 16:
24
- return hex(base_10)[2:].upper()
25
  elif to_base == 8:
26
- return oct(base_10)[2:]
27
  elif to_base == 2:
28
- return bin(base_10)[2:]
29
 
30
- correct_answer = convert_number(number, from_base, to_base)
31
  options = [correct_answer]
32
 
33
  # Generate incorrect answers
34
  while len(options) < 4:
35
  invalid_number = ''.join(random.choice(digits) for _ in range(4))
36
- invalid_answer = convert_number(invalid_number, from_base, to_base)
37
  if invalid_answer not in options:
38
  options.append(invalid_answer)
39
 
@@ -45,9 +45,9 @@ def generate_question():
45
  # Step-by-step solution using SymPy for demonstration
46
  step_by_step_solution = [
47
  f"Step 1: Convert the number {number} from base {from_base} to base 10:",
48
- f" {number} (base {from_base}) = {sp.Integer(base_10)} (base 10).",
49
  f"Step 2: Convert the base 10 number to base {to_base}:",
50
- f" {base_10} (base 10) = {correct_answer} (base {to_base}).",
51
  f"Step 3: The correct answer is {correct_answer}."
52
  ]
53
 
 
16
 
17
  def convert_number(number, from_base, to_base):
18
  # Convert from `from_base` to base 10 using Python's built-in `int`
19
+ base_10_value = int(number, from_base)
20
  # Convert from base 10 to `to_base` using Python's built-in methods
21
  if to_base == 10:
22
+ return str(base_10_value), base_10_value
23
  elif to_base == 16:
24
+ return hex(base_10_value)[2:].upper(), base_10_value
25
  elif to_base == 8:
26
+ return oct(base_10_value)[2:], base_10_value
27
  elif to_base == 2:
28
+ return bin(base_10_value)[2:], base_10_value
29
 
30
+ correct_answer, base_10_value = convert_number(number, from_base, to_base)
31
  options = [correct_answer]
32
 
33
  # Generate incorrect answers
34
  while len(options) < 4:
35
  invalid_number = ''.join(random.choice(digits) for _ in range(4))
36
+ invalid_answer, _ = convert_number(invalid_number, from_base, to_base)
37
  if invalid_answer not in options:
38
  options.append(invalid_answer)
39
 
 
45
  # Step-by-step solution using SymPy for demonstration
46
  step_by_step_solution = [
47
  f"Step 1: Convert the number {number} from base {from_base} to base 10:",
48
+ f" {number} (base {from_base}) = {base_10_value} (base 10).",
49
  f"Step 2: Convert the base 10 number to base {to_base}:",
50
+ f" {base_10_value} (base 10) = {correct_answer} (base {to_base}).",
51
  f"Step 3: The correct answer is {correct_answer}."
52
  ]
53