用 Python 搭建解一元二次方程的计算器
目录
前言
一、算法实现
二、TK 图形化界面
三、一元二次方程计算器 - 完整代码
参考资料
前言
一元二次方程想必大家都不陌生。在中学时,我们学过求根公式:
当 b² - 4ac 大于零时,方程有两个解;等于零时有一个解;小于零时则无解。
那么就把数学公式变成代码!我们说干就干。
一、算法实现
首先导入要用到的数学库 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 + 1c.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 mathwindow = 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*cg = -c/bif 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博客
Python Tkinter Grid布局管理器详解 - 箬笠蓑衣 - 博客园 (cnblogs.com)
如何设置 Tkinter 文本输入控件的高度和宽度 | D栈 - Delft Stack
用 Python 搭建解一元二次方程的计算器相关推荐
- Python:解一元二次方程(带分数和根号结果!)
Python:解一元二次方程(带分数和根号结果!) 利用Python解一元二次方程 完善方程的系数 定义函数开方后是否为整数(在试了n次后终于搞定如何判断开方为整数类型) 定义函数取整开方后的数 判断 ...
- 用python编程解一元二次方程
请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程: ax2 + bx + c = 0的两个解. 提示:计算平方根可以调用math.sqrt()函数 # -*- cod ...
- 用python语言解一元二次方程
- python怎么算一元二次方程_python如何解一元二次方程
本文收集整理关于python如何解一元二次方程的相关议题,使用内容导航快速到达. 内容导航: Q1:python 使用try except解一元二次方程问题 123456789101112131415 ...
- 用python写一个解一元二次方程的类
第一步 明确需要的变量 要解一元二次方程,肯定先把它化成一般式:ax^2+bx+c=0,我们需要用到的参数是a,b,c还有一个判别式"▲" ,可以随意给个名字,我这里给的g. 第二 ...
- Python——解一元二次方程
Python的第一个练习--解一元二次方程&条件语句 1.float ()函数用于将整数和字符串转换成浮点数. 2.int()函数也可以解整数方程,但是当不是整数的是,就会报错. print( ...
- python解一元二次方程步骤-Python实现求解一元二次方程的方法示例
Python实现求解一元二次方程的方法示例 本文实例讲述了Python实现求解一元二次方程的方法.分享给大家供大家参考,具体如下: 1. 引入math包 2. 定义返回的对象 3. 判断b*b-4ac ...
- python解一元二次方程
解一元二次方程ax^2+bx+c=0 刚开始碰到这个问题,习惯性地想要用迭代的方式来做,居然忘记了解方程的公式... 思路: 公式法解方程即可,先计算delta=b^2-4ac 若delta<0 ...
- Java黑皮书课后题第3章:*3.1(代数:解一元二次方程)可以使用下面的公式求一元二次方程ax2+bx+c=0,编写程序提示用户输入a b c的值,并显示基于判断式的结果
*3.1(代数:解一元二次方程)可以使用下面的公式求一元二次方程ax2+bx+c=0,编写程序提示用户输入a b c的值,并显示基于判断式的结果 题目 题目描述 运行示例 破题 代码 题目 题目描述 ...
- 一元三次方程重根判别式_许兴华——关于复数集中解一元二次方程的问题
在学习复数时,最近有个别比较好学的同学提出一个问题: "对于复数系数一元二次方程,是否可以用求根公式求解呢?" --回答是肯定的! 关于复数集中解一元二次方程的问题.其实,在复数集 ...
最新文章
- C++——String类超详细介绍
- Python,你应该小心的逗号!一步错步步错
- SAP MM 物料主数据MRP2 视图Rounding Value字段
- 脑机融合技术的哲学审思
- ubuntu预装脚本
- lvs和keepalives
- python中的is
- 减少HTTP请求的方法
- 第六次 Scrum Meeting
- 1 Linux系统性能测试与监测工具汇总
- Android Json解析工具类
- Vue 中播放帧动画(抽离方法)
- 语音助手的涅槃关头,我们应该完全抛弃屏幕还是选择“语音+图形界面”?
- 小学听力测试英语软件,小学英语听力测试
- Kotlin协程之launch
- import * as用法
- centsos7网络连接激活失败_宽带连接时出现711错误的解决方法 | 小马激活官网
- 自然数、实数、整数、有理数的符号表示
- 中央财经大学创新创业中心主任尚超:大数据技术在防范虚假发票中的应用
- 向身边优秀的人学习,让自己变得优秀
热门文章
- 本特利3500软件组态指导
- 零基础一周学会PIC单片机视频教程
- 计算机网络强制100M,网络连通性故障分析与排除二例
- 计算机解码原理图,diy制作改进的CS4398解码 DAC PCB和原理图纸
- VS连接VSS代码管理器失败问题
- 编译原理用C语言编写递归下降分析程序,编译原理递归下降分析器(C语言).pdf
- 计算机端最好用的词典——GoldenDict
- 华硕笔记本电池0%充不进电_华硕笔记本电池0%充不进电
- html怎么做出相框的效果,纯CSS实现的相框效果
- 盘点常用的IDC综合业务、财务及用户管理平台