5.9 KiB
5.9 KiB
Руководство по обновлению калькуляторов
Статус обновлений
✅ Завершено:
- step_by_step_solver.py - добавлены операции
MULTIPLICATIONиDIVISION - calculater2.py (Десятичный) - добавлены 4 колонки (+, -, ×, ÷)
- binary_calculeator4.py (Двоичный) - добавлены 4 колонки (+, -, ×, ÷)
- octogon_calculeator6.py (Восьмеричный) - добавлены 4 колонки (+, -, ×, ÷)
⏳ Требуется завершить:
- sedecim_calculeator8.py (Шестнадцатеричный)
- pentecostal_calculeator10.py (50-ричный)
Инструкция для завершения оставшихся калькуляторов
Для sedecim_calculeator8.py и pentecostal_calculeator10.py:
1. Обновить init метод класса:
Добавить:
# Результаты для умножения и деления
self.result_mult = ft.Text(value="0", size=30, width=300)
self.result_div = ft.Text(value="0", size=30, width=300)
self.decimal_mult = ft.Text(value="(0₁₀)", size=14, color="#B0B0B0", width=300)
self.decimal_div = ft.Text(value="(0₁₀)", size=14, color="#B0B0B0", width=300)
# Поля ввода для умножения
self.input_mult_1 = None
self.input_mult_2 = None
# Поля ввода для деления
self.input_div_1 = None
self.input_div_2 = None
# Контейнеры для пошагового решения
self.steps_mult = ft.Column(scroll=ft.ScrollMode.AUTO, spacing=5)
self.steps_div = ft.Column(scroll=ft.ScrollMode.AUTO, spacing=5)
2. Добавить методы calculate_multiplication и calculate_division:
def calculate_multiplication(self, e):
# Логика умножения - преобразовать в десятичную, умножить, вернуть обратно
# Вызвать self.show_steps_mult(val1, val2, Operation.MULTIPLICATION)
def calculate_division(self, e):
# Логика деления - преобразовать в десятичную, разделить, вернуть обратно
# Проверка деления на ноль
# Вызвать self.show_steps_div(val1, val2, Operation.DIVISION)
3. Добавить методы show_steps_mult и show_steps_div:
def show_steps_mult(self, num1: str, num2: str, operation: Operation):
# Аналогично show_steps_left/right
# Обновить self.steps_mult
def show_steps_div(self, num1: str, num2: str, operation: Operation):
# Аналогично show_steps_left/right
# Обновить self.steps_div
4. Обновить test_data метод:
Добавить поля ввода для умножения и деления:
self.input_mult_1 = ft.TextField(...)
self.input_mult_2 = ft.TextField(...)
self.input_div_1 = ft.TextField(...)
self.input_div_2 = ft.TextField(...)
Добавить две новые колонки в ft.Row (controls):
ft.Column( # Умножение
controls=[
self.input_mult_1,
ft.Text("× Умножение", ...),
self.input_mult_2,
ft.Container(content=...), # result_mult
ft.CupertinoButton("=", on_click=self.calculate_multiplication),
ft.Container(content=self.steps_mult, ...)
]
),
ft.Column( # Деление
controls=[
self.input_div_1,
ft.Text("÷ Деление", ...),
self.input_div_2,
ft.Container(content=...), # result_div
ft.CupertinoButton("=", on_click=self.calculate_division),
ft.Container(content=self.steps_div, ...)
]
)
Примечания:
- Для sedecim_calculeator8.py: Используйте существующие методы
hex_to_decimalиdecimal_to_hex - Для pentecostal_calculeator10.py: Используйте существующие методы
from_base50иto_base50 - Во всех случаях импортируйте
Operationиз step_by_step_solver - Проверьте деление на ноль в методе calculate_division
Шаблон для calculate_multiplication (шестнадцатеричный):
def calculate_multiplication(self, e):
try:
num1 = self.hex_to_decimal(self.input_mult_1.value.upper())
num2 = self.hex_to_decimal(self.input_mult_2.value.upper())
result_decimal = num1 * num2
result_hex = self.decimal_to_hex(result_decimal)
self.result_mult.value = f"HEX: {result_hex}"
self.decimal_mult.value = f"DEC: {result_decimal}"
if '.' not in self.input_mult_1.value and '.' not in self.input_mult_2.value:
hex_val1 = self.input_mult_1.value.upper().lstrip('-+') if self.input_mult_1.value else "0"
hex_val2 = self.input_mult_2.value.upper().lstrip('-+') if self.input_mult_2.value else "0"
self.show_steps_mult(hex_val1, hex_val2, Operation.MULTIPLICATION)
else:
self.steps_mult.controls.clear()
self.steps_mult.controls.append(
ft.Text("Пошаговое решение доступно только для целых чисел", color="#FFD700", size=12)
)
self.steps_mult.update()
except Exception as ex:
self.result_mult.value = f"Ошибка: {str(ex)}"
self.decimal_mult.value = "DEC: ошибка"
self.page.update()
Следующие шаги:
- Откройте sedecim_calculeator8.py
- Примените изменения согласно шаблону выше
- Повторите для pentecostal_calculeator10.py
- Протестируйте все калькуляторы
Все изменения следуют единому паттерну, использованному в уже обновленных калькуляторах.