Допоможіть, будь ласка, зробити ось таку програму Python
Розробити програму, яка обчислює корені квадратного рівняння. Вікно
програми повинно містити відповідну кількість віджетів Label, Entry, Button.
Початкові параметри вікна: ширина – 400, висота – 300, колір тла – зелений.
Використати менеджер геометрії pack().
Answers & Comments
Ответ:
# Розв'язання квадратного рівняння a*x^2+b*x+c=0
from tkinter import *
from math import sqrt
def solver(a,b,c):
D = b*b - 4*a*c # обчислення дискримінанта
if D >= 0:
x1 = (-b + sqrt(D)) / (2*a);
x2 = (-b - sqrt(D)) / (2*a)
text = "Дискримінант: %s \n x1 = %s \n x2 = %s \n" % (D, x1, x2)
else:
text = "Дискримінант: %s \n Рівняння розв'язків немає" % D
return text
def inserter(value):
""" Очистка та вставка значень """
output.delete("0.0","end")
output.insert("0.0",value)
def clear(event):
""" Очистка текстових полів об'єкта Entry """
caller = event.widget
caller.delete("0", "end")
def handler(): # функція обробки
# Отримати значення коефіцієнтів з перевіркою на коректність
try:
a_val = float(a.get())
b_val = float(b.get())
c_val = float(c.get())
inserter(solver(a_val, b_val, c_val))
except ValueError:
inserter("Вставити числові коефіцієнти квадратного рівняння")
root = Tk()
root.title("Розв'язок квадратного рівняння")
root.geometry("330x230+300+100")
root.resizable(width=False, height=False)
#
frame = Frame(root) #
frame.pack()
a = Entry(frame, width=3) #
a.grid(row=1,column=1,padx=(10,0))
a.bind("<FocusIn>", clear)
al = Label(frame, text="x**2+").grid(row=1,column=2)
b = Entry(frame, width=3) #
b.bind("<FocusIn>", clear)
b.grid(row=1,column=3)
bl = Label(frame, text="x+").grid(row=1, column=4)
c = Entry(frame, width=3) #
c.bind("<FocusIn>", clear)
c.grid(row=1, column=5)
cl = Label(frame, text="= 0").grid(row=1, column=6)
but = Button(frame, text="Розв'язати", command=handler).grid(row=1,
column=7, padx=(10,0)) #
output = Text(frame, bg="lightblue", font="Arial 12", width=35, height=10)
output.grid(row=2, columnspan=8)
root.mainloop()
Объяснение:
Квадратне рівняння має вигляд ax^2 + bx + c = 0. Коефіцієнти a, b і c - це конкретні числа, а x треба знайти, розв'язавши рівняння.
Алгоритм
1. Обчислити дискримінант за формулою d = b^2 - 4ac.
2. Якщо дискримінант більше нуля, то обчислити два кореня рівняння:
x1 = (-b + √d) / 2a
x2 = (-b-√d) / 2a
3. Якщо дискримінант дорівнює нулю, то обчислити тільки один корінь (другий буде дорівнює йому).
4. Якщо дискримінант від'ємний, то вивести повідомлення, що коріння немає.