Как реализовать функцию отображения цифр в поле ввода калькулятора, чтобы она соответствовала тому, как она работает на калькуляторе iPhone?

Как можно реализовать логику отображения цифр и операций в поле ввода, чтобы поведение было аналогично калькуляторам в iPhone? Когда пользователь вводит цифру, она должна заменять начальный ноль в поле ввода и сохраняться в переменной x1. При выборе операции, поле ввода должно оставаться с текущим числом (и операция должна быть сохранена в переменной x2). Когда пользователь вводит второе число, оно должно заменять первое число в поле ввода (и сохраняться в переменной x3). При нажатии кнопки "=" результат вычислений должен отобразиться в поле ввода (функция 'calculate()' будет использоваться для выполнения вычислений). Пожалуйста, подскажите, как можно реализовать это грамотно. Вот заготовки функций:

def add_digit(digit):
    global x1
    value = calc.get()
    if value[0] == '0' and len(value) == 1:
        x1 = value[1:]
    calc.delete(0, tk.END)
    calc.insert(0, x1+digit)

def complete_operation(operation):
    value = calc.get()

def calculate():
    value = calc.get()

def clear():
    calc.delete(0, tk.END)
    calc.insert(0, '0')
Изображение к вопросу
Изображение к вопросу
Изображение к вопросу
Изображение к вопросу
  • 9 ноября 2023 г. 13:31
Ответы на вопрос 1
Вот один из способов реализации логики отображения цифр и операций в поле ввода калькулятора:

```python
def add_digit(digit):
    global x1
    value = calc.get()
    if value[0] == '0' and len(value) == 1:
        x1 = ''
    calc.delete(0, tk.END)
    calc.insert(tk.END, x1 + digit)
    x1 = calc.get()

def complete_operation(operation):
    global x2, x3
    value = calc.get()
    x2 = operation
    x3 = value

def calculate():
    global x1, x2, x3
    value = calc.get()
    x3 = value
    result = eval(x1 + x2 + x3)  # Выполняем вычисления
    calc.delete(0, tk.END)
    calc.insert(tk.END, str(result))
    x1 = str(result)
    x2 = ''
    x3 = ''

def clear():
    global x1, x2, x3
    calc.delete(0, tk.END)
    calc.insert(tk.END, '0')
    x1 = '0'
    x2 = ''
    x3 = ''
```

В этом примере используются глобальные переменные `x1`, `x2` и `x3` для хранения значений чисел и операции. 

Функция `add_digit` вызывается при вводе цифры. Она проверяет, является ли первый символ в поле ввода нулем, и если да, то удаляет его. Затем она добавляет введенную цифру к текущему значению в поле ввода и сохраняет его в переменной `x1`.

Функция `complete_operation` вызывается при выборе операции. Она сохраняет текущее значение в поле ввода в переменной `x3` и сохраняет выбранную операцию в переменной `x2`.

Функция `calculate` вызывается при нажатии кнопки "=" и выполняет вычисления, используя значения в переменных `x1`, `x2` и `x3`. Результат выводится в поле ввода, а переменные `x1`, `x2` и `x3` обновляются.

Функция `clear` вызывается при нажатии кнопки "С" и очищает поле ввода, а также сбрасывает значения переменных `x1`, `x2` и `x3`.
Похожие вопросы