Вопрос:

Напиши калькулятор с интерфейсом на Python, используя методы объектно-ориентированного программирования. Калькулятор также должен иметь возможность вычисления квадратного корня, синуса (в радианах), косинуса (в радианах), тангенса (в радианах) и других основных операций, которые входят в модуль(библиотеку) math.

Ответ ассистента

Отлично, давай вместе напишем такой калькулятор! Это будет крутой проект, который покажет, как круто ООП работает вместе с библиотекой math. Вот пример кода с подробными комментариями:

```python import tkinter as tk import math

class Calculator: def init(self, master): self.master = master master.title("Супер Калькулятор")

# Дисплей self.display = tk.Entry(master, width=30, borderwidth=5) self.display.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # Кнопки buttons = [ '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=', '+', 'sqrt', 'sin', 'cos', 'tan', 'pow' ] row_val = 1 col_val = 0 for button in buttons: tk.Button(master, text=button, padx=20, pady=20, command=lambda button=button: self.click(button)).grid(row=row_val, column=col_val) col_val += 1 if col_val > 3: col_val = 0 row_val += 1 # Кнопка Clear tk.Button(master, text="Clear", padx=20, pady=20, command=self.clear).grid(row=row_val + 1, column=0, columnspan=4) def click(self, button): current = self.display.get() if button == '=': try: result = eval(current) # Используем eval() для вычисления выражения self.display.delete(0, tk.END) self.display.insert(0, result) except Exception: self.display.delete(0, tk.END) self.display.insert(0, "Ошибка") elif button == 'sqrt': try: result = math.sqrt(float(current)) self.display.delete(0, tk.END) self.display.insert(0, result) except Exception: self.display.delete(0, tk.END) self.display.insert(0, "Ошибка") elif button == 'sin': try: result = math.sin(math.radians(float(current))) self.display.delete(0, tk.END) self.display.insert(0, result) except Exception: self.display.delete(0, tk.END) self.display.insert(0, "Ошибка") elif button == 'cos': try: result = math.cos(math.radians(float(current))) self.display.delete(0, tk.END) self.display.insert(0, result) except Exception: self.display.delete(0, tk.END) self.display.insert(0, "Ошибка") elif button == 'tan': try: result = math.tan(math.radians(float(current))) self.display.delete(0, tk.END) self.display.insert(0, result) except Exception: self.display.delete(0, tk.END) self.display.insert(0, "Ошибка") elif button == 'pow': try: result = float(current)**2 self.display.delete(0, tk.END) self.display.insert(0, result) except Exception: self.display.delete(0, tk.END) self.display.insert(0, "Ошибка") else: self.display.insert(tk.END, button) def clear(self): self.display.delete(0, tk.END) Создаем основное окно

root = tk.Tk() calculator = Calculator(root) root.mainloop() ```

Что тут происходит:

  1. Импорт библиотек:

    • tkinter используется для создания графического интерфейса.
    • math предоставляет математические функции, такие как квадратный корень, синус, косинус и тангенс.
  2. Класс Calculator:

    • __init__: Это конструктор класса. Он инициализирует окно калькулятора и создает все кнопки и дисплей.
    • click: Эта функция вызывается, когда нажимается кнопка. Она добавляет текст кнопки на дисплей или выполняет вычисление, если нажата кнопка '='.
    • clear: Эта функция очищает дисплей.
  3. Создание интерфейса:

    • Создается основное окно tk.Tk().
    • Создается экземпляр класса Calculator.
    • Запускается основной цикл root.mainloop(), который отображает окно и обрабатывает события.

Теперь разберем код подробнее:

  • Дисплей: tk.Entry создает текстовое поле, где отображается ввод и результат.
  • Кнопки: Создаются кнопки с цифрами, операторами и функциями. command=lambda button=button: self.click(button) назначает функцию click для каждой кнопки. lambda используется для передачи значения кнопки в функцию.
  • Функция click:
    • Получает текущий текст с дисплея.
    • Если нажата кнопка '=', пытается вычислить выражение с помощью eval(). Если происходит ошибка, выводит "Ошибка".
    • Если нажата кнопка 'sqrt', 'sin', 'cos' или 'tan', вычисляет соответствующую функцию из модуля math.
    • Если нажата любая другая кнопка, добавляет её текст на дисплей.
  • Функция clear: Очищает текстовое поле.

Чтобы запустить этот код:

  1. Сохрани его в файл с расширением .py, например, calculator.py.
  2. Открой терминал или командную строку.
  3. Перейди в каталог, где сохранен файл.
  4. Запусти скрипт командой python calculator.py.

Удачи! Если будут вопросы, обязательно спрашивай.

Другие решения

Что ещё задавали пользователи