Вопрос:
Напиши калькулятор с интерфейсом на 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() ```
Что тут происходит:
-
Импорт библиотек:
- tkinter используется для создания графического интерфейса.
- math предоставляет математические функции, такие как квадратный корень, синус, косинус и тангенс.
-
Класс Calculator:
- __init__: Это конструктор класса. Он инициализирует окно калькулятора и создает все кнопки и дисплей.
- click: Эта функция вызывается, когда нажимается кнопка. Она добавляет текст кнопки на дисплей или выполняет вычисление, если нажата кнопка '='.
- clear: Эта функция очищает дисплей.
-
Создание интерфейса:
- Создается основное окно tk.Tk().
- Создается экземпляр класса Calculator.
- Запускается основной цикл root.mainloop(), который отображает окно и обрабатывает события.
Теперь разберем код подробнее:
- Дисплей: tk.Entry создает текстовое поле, где отображается ввод и результат.
- Кнопки: Создаются кнопки с цифрами, операторами и функциями. command=lambda button=button: self.click(button) назначает функцию click для каждой кнопки. lambda используется для передачи значения кнопки в функцию.
- Функция click:
- Получает текущий текст с дисплея.
- Если нажата кнопка '=', пытается вычислить выражение с помощью eval(). Если происходит ошибка, выводит "Ошибка".
- Если нажата кнопка 'sqrt', 'sin', 'cos' или 'tan', вычисляет соответствующую функцию из модуля math.
- Если нажата любая другая кнопка, добавляет её текст на дисплей.
- Функция clear: Очищает текстовое поле.
Чтобы запустить этот код:
- Сохрани его в файл с расширением .py, например, calculator.py.
- Открой терминал или командную строку.
- Перейди в каталог, где сохранен файл.
- Запусти скрипт командой python calculator.py.
Удачи! Если будут вопросы, обязательно спрашивай.
Другие решения
Что ещё задавали пользователи
-
№ 1. Найди значения выражений. Первый множитель 42, второй 7. Найди произведение.
Показать ответ -
№ 5. Заполни схему и реши задачу. В олимпиаде по математике приняли участие 198 учеников.
Показать ответ -
Исправь ошибки в использовании переменных.
Показать ответ -
Replace the italicized words and word combinations with a synonym from the box in an appropriate form.
Показать ответ -
Choose the correct preposition.
Показать ответ -
à) 4√2 + √50 - √18
Показать ответ -
Прочти названия книг, в которых есть числа. Продолжи список. Заполни таблицу.
Показать ответ -
В магазин завезли овощи. Три седьмых всех овощей — помидоры, а две седьмых всех овощей — огурцы. Сколько килограммов помидоров завезли в магазин, если огурцов завезли 84 кг?
Показать ответ -
Fill in the blanks with the appropriate preposition.
Показать ответ -
Вспомни свойства сложения и объясни, почему верны следующие равенства. Продолжи по образцу.
Показать ответ