Рассмотрим пример создания графического интерфейса (GUI) на Python . В качестве «жертвы» напишем простенькую программу — решатель квадратных уравнений. Наше задание мы разобъем на несколько частей.
Часть первая: функция решения квадратного уравнения.
Напомним, что квадратным является уравнение вида:
Есть несколько способов решить квадратное уравнение, мы выберем решение через дискриминант.
Используя эту формулу мы можем вывести решение. Если дискриминант больше или равен нулю, то корни уравнения высчитываются по формуле:
Если же дискриминант меньше нуля, то уравнение не имеет решений.
Превратим данные формулы в код:
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 = «The discriminant is: %s n X1 is: %s n X2 is: %s n» % (D, x1, x2)Графический калькулятор квадратных уравнений на python (питон) tkinter
else:
text = «The discriminant is: %s n This equation has no solutions» % D
return text
Чтобы все работало не забудьте импортировать функцию sqrt из модуля math.
from math import sqrt
Поскольку мы будем выводить результат в специально созданном виджете — мы сразу же вставляем полученный ответ в отформатированную строку и возвращаем ее.
Теперь пора переходить к созданию графической оболочки для нашего приложения.
Часть вторая: создаем GUI для программы
Для простоты будем создавать GUI встроенными средствами Python , поэтому импортируем все из библиотеки Tkinter :
from Tkinter import *
В Python версии 3.х название модуля следует писать с маленькой буквы — tkinter.
Далее создаем само окно и размещаем на нем необходимые виджеты:
# родительский элемент
# устанавливаем название окна
root.title(«Quadratic calculator»)
# устанавливаем минимальный размер окна
root.minsize(325,230)
# выключаем возможность изменять окно
root.resizable(width=False, height=False)
# создаем рабочую область
frame = Frame(root)
# поле для ввода первого аргумента уравнения (a)
a = Entry(frame, width=3)
a.grid(row=1,column=1,padx=(10,0))
# текст после первого аргумента
a_lab = Label(frame, text=»x**2+»).grid(row=1,column=2)
# поле для ввода второго аргумента уравнения (b)
b = Entry(frame, width=3)
b.grid(row=1,column=3)
# текст после второго аргумента
b_lab = Label(frame, text=»x+»).grid(row=1, column=4)
# поле для ввода третьего аргумента уравнения (с)
c = Entry(frame, width=3)
c.grid(row=1, column=5)
# текст после третьего аргумента
c_lab = Label(frame, text=»= 0″).grid(row=1, column=6)
# кнопка решить
but = Button(frame, text=»Solve»).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()
Если вы в точности повторили указанный код, то после запуска скрипта у вас получится примерно следующее окно:
НАХОДИМ КОРНИ КВАДРАТНОГО УРАВНЕНИЯ С ПОМОЩЬЮ PYTHON — If/Else **Программа решает за тебя!**
Отлично, программа работает. Осталось объяснить Python как связать эти две части.
Часть третья: объединяем все воедино
Задача перед нами стоит следующая — написать функцию, которая будет брать числа из полей для ввода, передавать их функции решения квадратного уравнения и выводить результат в поле для вывода. Конечно, все это можно реализовать в одной функции, но лучше разделить на несколько:
Функция вставки информации:
def inserter(value):
«»» Inserts specified value into text widget «»»
output.delete(«0.0″,»end»)
output.insert(«0.0»,value)
Функция inserter предельно проста: очищает поле для ввода и вставляет туда переданный ей аргумент value.
Напишем функцию обработки введенной информации. Назовем ее handler:
def handler():
«»» Get the content of entries and passes result to the output area «»»
# make sure that we entered correct values
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(«Make sure you entered 3 numbers»)
В зависимости от данных введенных в поля для ввода передает функции inserter либо результат решения уравнения, либо сообщение о неверно введенных данных.
Чтобы все работало, следует изменить строку создания виджета Button следующим образом:
but = Button(frame, text=»Solve», command=handler).grid(row=1, column=7, padx=(10,0))
Теперь можно спокойно пользоваться нашей программой:
Дискриминант больше нуля Дискриминант равен нулю Дискриминант меньше нуля. Решений нет Введены не все аргументы
Часть четвертая: необязательная
Можно добавить немного удобства для нашей программы. Проблема в том, что каждый раз вводя новые значения нам приходится удалять старые, что не очень комфортно. Напишем функцию, которая будет очищать поле для ввода после клика по нему.
def clear(event):
«»» Clears entry form «»»
caller = event.widget
caller.delete(«0», «end»)
Таким образом мы очищаем виджет, вызвавший данную функцию. Чтобы все работало, добавьте следующие строки после создания виджетов, но до размещения. Например, после строки a = Entry(. , но до строки a.grid(.
a.bind(«», clear)
b.bind(«», clear)
c.bind(«», clear)
Готово. Программа работает, Вы великолепны!
Источник: dzen.ru
thedeaddan/quadratic_equation_solver
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Решение квадратного уравнения
Простое приложение для решения квадратного уравнения вида ax^2 + bx + c = 0.
Для запуска приложения вам необходимо установить Python 3.x и библиотеку tkinter.
Python можно скачать с официального сайта python.org.
Установка библиотеки tkinter
Библиотека tkinter уже установлена в стандартной библиотеке Python, поэтому установка не требуется.
- Откройте командную строку (терминал) и перейдите в папку с приложением.
- Запустите приложение командой:
python quadratic_equation_solver.py
Введите коэффициенты уравнения в соответствующие поля ввода и нажмите кнопку «Решить».
Требования к окружению
- Python 3.x
- Библиотека tkinter
Информация о проекте
Эта программа была создана в рамках обучения программированию на языке Python. Приложение решает квадратное уравнение вида ax^2 + bx + c = 0 и предоставляет результат в виде одного или двух корней.
Этот проект распространяется под лицензией MIT. Подробную информацию смотрите в файле LICENSE .
About
Простое приложение для решения квадратного уравнения вида ax^2 + bx + c = 0.
Источник: github.com
Решение квадратных уравнений в Python
Статьи
Автор Admin На чтение 2 мин Просмотров 736 Опубликовано 28.02.2023
Введение
В ходе статьи научимся решать квадратные уравнения при помощи языка программирования Python.
Решение квадратных уравнений в Python
Для написания кода нам понадобится метод sqrt() из модуля math, который возвращает квадратный корень числа. Импортируем его:
from math import sqrt
Теперь дадим пользователю возможность ввести коэффициенты a, b и c:
from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘))
Вычислим дискриминант по формуле:
D = b^2 — 4 * a * c
from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c
Перейдём к нахождению корней. Зададим условие, что если дискриминант больше нуля, то x1 и x2 будут высчитаны по формуле:
x1, x2 = frac<-bpmsqrt>
from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c if d > 0: x1 = (-b + sqrt(d) / (2 * a)) x2 = (-b — sqrt(d) / (2 * a)) print(f’x1 = ; x2 = ‘)
Если же дискриминант равен нулю, то будет всего один корень по формуле:
x = frac
from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c if d > 0: x1 = (-b + sqrt(d) / (2 * a)) x2 = (-b — sqrt(d) / (2 * a)) print(f’x1 = ; x2 = ‘) elif d == 0: x1 = -b / (2 * a) print(f’x1 = ‘)
Если же дискриминант оказался отрицательным, это означает что корней нет:
from math import sqrt a = float(input(‘a = ‘)) b = float(input(‘b = ‘)) c = float(input(‘c = ‘)) d = b**2 — 4 * a * c if d > 0: x1 = (-b + sqrt(d) / (2 * a)) x2 = (-b — sqrt(d) / (2 * a)) print(f’x1 = ; x2 = ‘) elif d == 0: x1 = -b / (2 * a) print(f’x1 = ‘) else: print(‘Нет корней’)
В ходе статьи мы с Вами написали небольшую программку на языке программирования Python, которая умеет решать квадратные уравнения. Надеюсь Вам понравилась статья, желаю удачи и успехов!
Источник: it-start.online