середу, 24 травня 2017 р.

Розв'язуємо квадратні рівняння разом з Python

Квадратне рівняння - рівняння виду ax**2+bx+c=0. Це не просте рівняння, тому просто виразити х з нього просто неможливо, адже розв'язок даного рівняння може бути не один. Для розв'язку даного рівняння потрібно виконати наступні дії:
  1. Знайти дискримінант (D=b**2-4ac);
  2. якщо дискримінант менше 0, то рівняння не має розв'язків;
  3. якщо D=0, рівняння має лише один корінь. Знайти його за формулою x=-b/(2*a);
  4. якщо дискримінант більше 0, то рівняння має два корені. Знайти їх за формулами x1=(-b+D)/(2*a), x2=(-b-D)/(2*a).
Отже, ми напишемо програму для розрахунку коренів квадратного рівняння за даним алгоритмом. Користувач введе параметри а, b та с, а програма виведе дискримінант рівняння та корені. Якщо коренів не має то виведеться повідомлення "D<0, рівняння не має розв'язків".
Спочатку створимо вікно, написи, та текстові поля для введення параметрів:
from tkinter import *
win=Tk()
win.geometry("370x370")
win.resizable(False, False)
a=Entry(win, width=7, font="12")
a.place(x=40, y=40)
Label(win, text="x**2+", font="12").place(x=110, y=40)
b=Entry(win, width=7, font="12")
b.place(x=150, y=40)
Label(win, text="x+", font="12").place(x=220, y=40)
c=Entry(win, width=7, font="12")
c.place(x=240, y=40)
Label(win, text="=0", font="12").place(x=310, y=40)
lab1=Label(win, text="D=", font="12")
lab1.place(x=40, y=160)
lab2=Label(win, text="", font="12")
lab2.place(x=40, y=200)
win.mainloop()
Тепер створимо кнопку для запуску алгоритму підрахунку та виведення результатів:
but=Button(win, width=31, text="Розрахувати", font="12", bg="white")
but.place(x=40, y=80)
but.bind("<Button-1>", fun)
Ну і сам алгоритм:
def fun(event):
  D=float(b.get())**2-4*float(a.get())*float(c.get())

  lab1["text"]="D = "+b.get()+"**2-4*("+a.get()+")*("+c.get()+") = "+str(D) 
  if D>0:  
    lab2["text"]="x1 = "+str((-             float(b.get())+D**0.5)/(2*float(a.get())))+"\n x2 = "+str((-float(b.get())-D**0.5)/(2*float(a.get()))) 
  elif D==0: 
    lab2["text"]="x = "+str(float(b.get())/(2*float(a.get()))) 
  else: 
     lab2["text"]="D<0, рівняння не має розв'язків"
Тепер спробуємо запустити програму та введемо такі параметри: a=1, b=-5, c=6.

Придбати посібник з програмування мовою Python для 8-го класу : proginschool.inf.ua

Немає коментарів:

Дописати коментар

Динамічне програмування мовою Python

Ця тема не входить в шкільний курс інформатики, проте дуже часто представлена на олімпіаді з програмування. Динамічне програмування - це вж...