欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用python做个带GUI的求根公式吧

程序员文章站 2022-03-28 22:39:09
用python做个带GUI的求根公式吧解题程序在本文中,将用python实现解一元二次方程ax^2+bx+c=0(a≠0)的求根公式,并设计基于TK的GUI界面。实现效果程序编写整体GUI界面应用场景实现效果如下图:用户通过GUI界面输入a,b,c的值,程序会自动判断输入是否为数字和是否有实数根,并在下方的输出框内输出反馈或结果。(GUI同时兼容MacOS与Windows操作系统)(解题程序)程序编写本程序由pythonIDLE与pycharmDebug编写而成。判...

用python做个带GUI的求根公式吧

解题程序

在本文中,将用python实现解一元二次方程ax^2+bx+c=0(a≠0)的求根公式,并设计基于TK的GUI界面。

  • 实现效果
  • 程序编写
    • 整体
    • GUI界面
  • 应用场景

实现效果

如下图:
用python做个带GUI的求根公式吧
用户通过GUI界面输入a,b,c的值,程序会自动判断输入是否为数字和是否有实数根,并在下方的输出框内输出反馈或结果。
(GUI同时兼容MacOS与Windows操作系统)
(解题程序)

程序编写

本程序由pythonIDLE与pycharmDebug编写而成。

判断用户是否输入数字

导入tkinter,tkinter.filedialog,math,并def一个函数来判断用户是否输入数字。
利用float的特性来判断是否是数字。

# 对方已掉线 <-一个朋友,提供方程解法代码~
# 凉了本凉<-GUI
# 求根公式
from tkinter import*
from tkinter.filedialog import*
import math
def is_number(s):
    try:
        float(s)
        return False
    except (TypeError, ValueError):
        pass
    return True

创建主程序(定义GUI功能)

使用刚才的is_number(s)来判断用户是否在GUI内输入数字。
(在tkinter中换行使用/n)
(在tkinter中获取与交互的函数时要用函数名.get())

#图形界面
#执行
def os():
    if is_number(a.get()) == True:
        text.insert(END,"a不是数值,重新输入\n\n")
        if is_number(b.get()) == True:
            text.insert(END,"b不是数值,重新输入\n\n")
            if is_number(c.get()) == True:
                text.insert(END,"c不是数值,重新输入\n\n")
                

然后设置一个新变量delta(见下图),后用关与delta的公式将其赋值来判断是否有实数根delta = int(b.get())**2-4*int(a.get())*int(c.get())
以及判断是否为方程与输出解。
用python做个带GUI的求根公式吧

    if int(a.get()) != 0:
        delta = int(b.get())**2-4*int(a.get())*int(c.get())
        if delta < 0:
            text.insert(END,"无实数根 delta<0\n\n")
        elif delta == 0:
            s = -float(b.get())/(2*float(a.get()))# tmsb

            text.insert(END,"x1=x2=" + str(s) +"\n\n") # tmsb
        else:
            root_delta = math.sqrt(delta)
            x1 = (-int(b.get())+root_delta)/(2*int(a.get()))
            x2 = (-int(b.get())-root_delta)/(2*int(a.get()))
            text.insert(END,"x1=%s" % x1, "\a", "x2=%s" % x2 +"\n\n")
    else:  
        text.insert(END,"这不是一个一元二次方程\n\n")
            

这样就完成了在GUI中的所有求根运算与数字,方程,实数根的判断。

创建主程序(定义GUI外观与交互界面)

在这里我来列下定义GUI外观与交互界面的部分常用函数:

  1. window = Tk()创建窗口。
  2. label = Label(window, text = "...")显示文字。
  3. lblt = Label(window, text = "...")写入标题。
  4. 变量名 = StringVar()在GUI中创建交互变量。
  5. txtt = Entry(window,textvariable = 变量名)创建可交互输入框。
  6. button = Button(window, text = "OK",command = 定义的函数(要执行的进程))创建可交互按钮。
  7. text = Text(window)文字显示框。

最后别忘了调用(不然啥都不会显示)。

  1. label / lblt / txtt / button / text .pack()打包调用。
  2. window.mainloop()创建,循环。

GUI界面代码(跳出定义(GUI功能) )。

window = Tk()
label = Label(window, text = "求根公式")
#a
lblt1 = Label(window, text = "↓↓写入a↓↓")
a = StringVar()
txtt1 = Entry(window,textvariable = a)
#b
lblt2 = Label(window, text = "↓↓写入b↓↓")
b = StringVar()
txtt2 = Entry(window,textvariable = b)
#c
lblt3 = Label(window, text = "↓↓写入c↓↓")
c = StringVar()
txtt3 = Entry(window,textvariable = c)

button = Button(window, text = "OK",command = os )
text = Text(window)

打包,创建,循环。

#调用
label.pack()
#a
lblt1.pack()
txtt1.pack()
#b
lblt2.pack()
txtt2.pack()
#c
lblt3.pack()
txtt3.pack()

button.pack()
text.pack()
window.mainloop()

这样,编码就完成啦(效果下图)。
用python做个带GUI的求根公式吧

总程序

最后把总程序写上,也可去我的下载界面获取跟多程序。

# 对方已掉线
# 凉了本凉
# 求根公式
from tkinter import*
from tkinter.filedialog import*
import math
def is_number(s):
    try:
        float(s)
        return False
    except (TypeError, ValueError):
        pass
    return True
#图形界面
#执行
def os():
    if is_number(a.get()) == True:
        text.insert(END,"a不是数值,重新输入\n\n")
        if is_number(b.get()) == True:
            text.insert(END,"b不是数值,重新输入\n\n")
            if is_number(c.get()) == True:
                text.insert(END,"c不是数值,重新输入\n\n")
    if int(a.get()) != 0:
        delta = int(b.get())**2-4*int(a.get())*int(c.get())
        if delta < 0:
            text.insert(END,"无实数根 delta<0\n\n")
        elif delta == 0:
            s = -float(b.get())/(2*float(a.get()))# tmsb

            text.insert(END,"x1=x2=" + str(s) +"\n\n") # tmsb
        else:
            root_delta = math.sqrt(delta)
            x1 = (-int(b.get())+root_delta)/(2*int(a.get()))
            x2 = (-int(b.get())-root_delta)/(2*int(a.get()))
            text.insert(END,"x1=%s" % x1, "\a", "x2=%s" % x2 +"\n\n")
    else:  
        text.insert(END,"这不是一个一元二次方程\n\n")
            
window = Tk()
label = Label(window, text = "求根公式")
#a
lblt1 = Label(window, text = "↓↓写入a↓↓")
a = StringVar()
txtt1 = Entry(window,textvariable = a)
#b
lblt2 = Label(window, text = "↓↓写入b↓↓")
b = StringVar()
txtt2 = Entry(window,textvariable = b)
#c
lblt3 = Label(window, text = "↓↓写入c↓↓")
c = StringVar()
txtt3 = Entry(window,textvariable = c)

button = Button(window, text = "OK",command = os )
text = Text(window)

#调用
label.pack()
#a
lblt1.pack()
txtt1.pack()
#b
lblt2.pack()
txtt2.pack()
#c
lblt3.pack()
txtt3.pack()

button.pack()
text.pack()
window.mainloop()

应用场景

这是一个带GUI的求根程序,可应用在所有需要求根的场景,也可修改后应用在其他程序 / 项目中。
特别鸣谢:“对方已掉线”~

后可能会有更多关于解题程序的文章~ 六年级凉了本人,请支持~

本文地址:https://blog.csdn.net/weixin_45739505/article/details/107371189

相关标签: python程序 python