PYTHON Буду благодарна!!!!
Складіть проєкт розв'язування квадратного рівняння. Вхідні дані (значення коефіцієнтів a,b,c) вводяться з полів. Результат виводиться у напис. Додайте кнопку ОБЧИСЛИТИ, при натисканні на яку відбувається обчислення.
Ответы
Можна створити інтерфейс з використанням бібліотеки Tkinter. Ось код:
import tkinter as tk
from tkinter import messagebox
import math
# Функція для обчислення квадратного рівняння
def solve_quadratic_equation(a, b, c):
try:
a = float(a)
b = float(b)
c = float(c)
discriminant = b**2 - 4*a*c
if discriminant > 0:
x1 = (-b + math.sqrt(discriminant)) / (2*a)
x2 = (-b - math.sqrt(discriminant)) / (2*a)
return "x1 = {0:.2f}, x2 = {1:.2f}".format(x1, x2)
elif discriminant == 0:
x = -b / (2*a)
return "x = {0:.2f}".format(x)
else:
return "No real roots"
except ValueError:
return "Invalid input"
# Функція для обробки натискання кнопки
def calculate():
a = entry_a.get()
b = entry_b.get()
c = entry_c.get()
result = solve_quadratic_equation(a, b, c)
messagebox.showinfo("Result", result)
# Створення вікна
root = tk.Tk()
root.title("Quadratic Equation Solver")
# Створення елементів інтерфейсу
label_a = tk.Label(root, text="a = ")
label_a.grid(row=0, column=0, padx=5, pady=5)
entry_a = tk.Entry(root)
entry_a.grid(row=0, column=1, padx=5, pady=5)
label_b = tk.Label(root, text="b = ")
label_b.grid(row=1, column=0, padx=5, pady=5)
entry_b = tk.Entry(root)
entry_b.grid(row=1, column=1, padx=5, pady=5)
label_c = tk.Label(root, text="c = ")
label_c.grid(row=2, column=0, padx=5, pady=5)
entry_c = tk.Entry(root)
entry_c.grid(row=2, column=1, padx=5, pady=5)
button = tk.Button(root, text="Calculate", command=calculate)
button.grid(row=3, column=0, columnspan=2, pady=10)
root.mainloop()
Функція обчислення квадратного рівняння
def calculate():
a = float(entry_a.get())
b = float(entry_b.get())
c = float(entry_c.get())
# Обчислюємо дискримінант
D = b**2 - 4*a*c
# Перевірка значень дискримінанта
if D < 0:
result_label.config(text="No real roots")
elif D == 0:
x = -b / (2*a)
result_label.config(text="x = {}".format(x))
else:
x1 = (-b + math.sqrt(D)) / (2*a)
x2 = (-b - math.sqrt(D)) / (2*a)
result_label.config(text="x1 = {}, x2 = {}".format(x1, x2))