大家好,小编来为大家解答以下问题,python求解一元二次方程的解,python一元二次方程求解代码,今天让我们一起来看看吧!
Source code download: 本文相关源码
目录
前言
一元二次方程想必大家都不陌生。在中学时,我们学过求根公式:
当 b² - 4ac 大于零时,方程有两个解;等于零时有一个解;小于零时则无解python编辑皮卡丘的编程码。
那么就把数学公式变成代码!我们说干就干。
一、算法实现
首先导入要用到的数学库 math
import math
知识点:连续输入多个 float 型数字
a,b,c = map(float,input("对于方程a^2x+bx+c=0, \n请输入a,b,c(空格隔开):").split())
# Tips: 可以通过.split(',') 将输入的分隔符改为逗号
通过求根公式解方程
k = b*b-4*a*c
# 知识点:if 判断语句的使用
if k < 0 :
print('方程无解')
# 注意,逻辑'等于'是两个等号,一个等号代表赋值
elif k == 0 :
x = -b/(2*a)
# 知识点:通过 %.2f 使输出的数保留两位小数
print('方程的解为:x1=x2=%.2f' % x)
else :
x1 = (-b+math.sqrt(k))/(2*a)
x2 = (-b-math.sqrt(k))/(2*a)
print('\n方程的解为: x1=%.2f, x2=%.2f' % (x1,x2))
运行结果展示:
算法部分就完成了。但是,运行要依靠命令行输入数字,对普通用户还是不太友好。
接下来,我们给这个计算器加上 GUI 界面:
二、TK 图形化界面
Tkinter 是 Python 的标准 GUI 库,且内置在了 Python 的安装包中。也就是说,我们只需输入这么一行:
import tkinter as tk
就可以开始 GUI 编程啦~ 接下来,我们先搭一个简单的计算器界面
创建一个窗口,我们输入:
window = tk.Tk() # 创建窗口
window.title('计算器') # 窗口的标题
window.geometry('800x400') # 窗口的大小(也可以不指定)
window.mainloop() # 窗口运行起来,要放在结尾哦
一个基本的窗口就搭建起来了~
在窗口上显示一行字:
k = tk.Label(window,text='请输入一个数字:',font=('Arial',12)) # 文字label
k.grid() # 固定文字的位置
再增加一个输入框:
x = tk.Entry(window) # 输入框
x.grid()
再放一个按钮:
# 先定义一个点击按钮时触发的函数
def cal():
a = float(x.get()) # 从输入框中读取一个 float 变量
b = a + 1
# 定义一个按钮
b1 = tk.Button(window,text='计算',command=cal)
b1.grid()
当然,我们还需要一个显示计算结果的地方:
def cal():
a = float(x.get()) # 从输入框中读取一个 float 变量
b = a + 1
c.set(b) # 注意,在这个函数里插了一行
c = tk.StringVar() # 字符串变量
# 把计算结果显示出来
l = tk.Label(window,textvariable=c,font=('Arial',12))
l.grid()
这时候我们输入一个数,点击“计算”,就能得到这个数+1的数啦~
一个简单的计算“+1”的计算器就建好了。
但是,这个这几个文字和框竖着排成了一列,有些不太规整。
# 把上面几行用于排版的代码改一下:
k.grid(row=0,column=0,sticky='w')
x.grid(row=1,column=0)
b1.grid(row=1,column=1,padx=20)
l.grid(row=3,column=0,sticky='w')
三、一元二次方程计算器 - 完整代码
在第二章,我们基本搭建了一个界面。接下来,我们将第一章中的算法打包进去
先放运行结果:
接下来是完整代码
import tkinter as tk
import math
window = tk.Tk() # 创建窗口
window.title('一元二次方程计算器') # 窗口的标题
# window.geometry('800x400') # 窗口的大小(也可以不指定)
# 一些界面元素
# grid 是一个格点,决定元素显示哪里
# columnspan 横跨多列格点,rowspan 同理
# padx pady ipadx ipady 调整分别调整外边距和内边距
# sticky = E 靠右 W 靠左
k = tk.Label(window,text='请输入一元二次方程的参数:',font=('Arial',12)) # 文字label
k.grid(row=0,column=0,columnspan=3,sticky='w',padx=10,pady=10)
x02 = tk.Entry(window) # 输入框
x02.grid(row=1,column=0,padx=10)
p1 = tk.Label(window,text=' x² + ',font=('Arial',12))
p1.grid(row=1,column=1)
x01 = tk.Entry(window)
x01.grid(row=1,column=2)
p2 = tk.Label(window,text=' x + ',font=('Arial',12))
p2.grid(row=1,column=3)
x00 = tk.Entry(window)
x00.grid(row=1,column=4)
p3 = tk.Label(window,text=' = 0',font=('Arial',12))
p3.grid(row=1,column=5)
# 一元二次方程计算函数(点击按钮后执行)
def cal():
a = float(x02.get())
b = float(x01.get())
c = float(x00.get())
k = b*b-4*a*c
g = -c/b
if a == 0:
resu.set('方程的解为: x = %.2f' % g)
if k < 0 :
resu.set('方程无解')
elif k == 0 :
x = -b/(2*a)
resu.set('方程的解为: x1 = x2 = %.2f' % x)
else :
x1 = (-b+math.sqrt(k))/(2*a)
x2 = (-b-math.sqrt(k))/(2*a)
resu.set('方程的解为: x1 = %.2f x2 = %.2f' % (x1,x2))
# 按钮
b1 = tk.Button(window,text='计算',width=10,command=cal)
b1.grid(row=1,column=6,padx=20)
# 结果显示
resu = tk.StringVar() # 字符串变量
l = tk.Label(window,textvariable=resu,font=('Arial',12))
l.grid(row=3,column=0,sticky='w',columnspan=3,padx=10)
window.mainloop() # 窗口运行起来,要放在结尾哦
参考资料
【Python】Tkinter教程_木子欢儿的博客-CSDN博客