Поможіть будь ласка, створив калькулятор, а він не може давати відповідь на питання(Створено на Python)
Код калькулятору:
import tkinter as tk
import math
def button_click(symbol):
current = entry.get()
entry.delete(0, tk.END)
entry.insert(0, current + symbol)
def calculate():
try:
expression = entry.get()
result = eval(expression, {'__builtins__': None}, {'math': math})
entry.delete(0, tk.END)
entry.insert(0, str(result))
except Exception as e:
entry.delete(0, tk.END)
entry.insert(0, "Ошибка")
def clear():
entry.delete(0, tk.END)
# Создаем главное окно
root = tk.Tk()
root.title("Калькулятор")
root.configure(bg="#F0F0F0")
# Создаем виджет для ввода
entry = tk.Entry(root, width=30, borderwidth=5)
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
# Создаем кнопки для цифр и операций
buttons = [
('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('/', 1, 3),
('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('*', 2, 3),
('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('-', 3, 3),
('0', 4, 0), ('.', 4, 1), ('=', 4, 2), ('+', 4, 3),
]
for button in buttons:
symbol, row, column = button
tk.Button(root, text=symbol, padx=20, pady=10, bg="#FFFF99", borderwidth=2, relief="groove", command=lambda s=symbol: button_click(s)).grid(row=row, column=column)
# Кнопка очистки
clear_button = tk.Button(root, text="C", padx=20, pady=10, bg="#FFCCCC", borderwidth=2, relief="groove", command=clear)
clear_button.grid(row=5, column=0, columnspan=3)
# Кнопка выхода
exit_button = tk.Button(root, text="Выход", padx=20, pady=10, bg="#FFCCCC", borderwidth=2, relief="groove", command=root.quit)
exit_button.grid(row=5, column=3, columnspan=1)
# Запускаем главный цикл обработки событий
root.mainloop()
Поможіть будь ласка!!! Даю 50 балів
Ответы на вопрос
Проблема у вашому коді полягає в тому, що кнопка = не викликає функцію calculate(), яка повинна обчислювати результат.
У вас усі кнопки, включно з =, використовують одну команду:
Тому, коли ви натискаєте =, програма просто додає цей символ у поле введення замість того, щоб виконати обчислення.
Наприклад, якщо ввести 5+3 і натиснути =, вийде 5+3=, а не 8.
Як виправити помилку?
Потрібно зробити так, щоб кнопка = запускала функцію calculate(), а інші кнопки продовжували викликати button_click().
Ось повністю виправлений код вашого калькулятора:
Що саме я змінив?
Головне виправлення — ось цей фрагмент:
Тепер програма перевіряє, яку кнопку натиснуто.
Якщо це
=, викликається функціяcalculate().Якщо це цифра або математична операція, викликається функція
button_click().Якщо натиснути
C, поле введення очиститься.
Також я прибрав import math, тому що для звичайних арифметичних операцій у цьому варіанті калькулятора він не потрібний.
Як тепер працюватиме калькулятор?
Приклад роботи
5+3
Після виправлення калькулятор зможе виконувати такі обчислення:
Вираз |
Результат |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Важливо: функція eval() підходить для простого навчального прикладу, але для повноцінного калькулятора краще використовувати безпечний обробник математичних виразів, оскільки eval() не призначена для обробки довільного введення користувача.
Висновок: у вас майже все було правильно. Основна помилка — ви створили функцію calculate(), але не прив'язали її до кнопки =. Після додавання перевірки if symbol == '=' калькулятор почне показувати результати обчислень.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

