python 科学计算-python 数据科学
发布时间:2023-02-08 11:15 浏览次数:次 作者:佚名
工作,工作,做一个科学计算器。
大家好,这里是喜剧研究所。 提到python GUI,很多人都会想到第三方库tkinter。 其实我们之前学过tk的基础,做了一个只有加减乘除功能的计算器。 本期,我们将带来它的增强版,科学计算器。
说到科学计算,大家是不是第一时间想到python的数学库? 是的,它也是我们代码的主角之一。 eval() 和 lambda() 这两个方法也是我们代码的灵魂。 让我们来看看如何使用它们。
eval()用于执行一个字符串表达式,并返回表达式的值。我们和print区别开来
s='8*8'
eval(s)
>>> 64
#大家通过例子区分一下这两个的区别
s='8*8'
print(s)
>>> 8*8
lambda() 允许我们在任何地方创建一个没有名字的单行函数。
(lambda x:x+1)(1)
>>> 2
#两种定义方法
g = lambda x:x+1
g(1)
>>> 2
源代码:
from tkinter import Tk
from tkinter import StringVar,Entry,Button
import math
class calculator:
def __init__(self):
window=Tk()
window.title('基于TK的科学计算器')
window.configure(background="white")
self.string=StringVar()
entry=Entry(window,textvariable=self.string,)
entry.grid(row=0,column=0,columnspan=6)
entry.configure(background="white")
entry.focus()
values=["C","DEL","(",")","%","gcd",
"sin","sqrt","e","pow","/","radians",
"cos","7","8","9","*","degrees",
"tan","4","5","6","-","ceil",
"pi","1","2","3","+","hypot",
"log",",","0",".","="]
text=1
i=0
row=1
col=0
for txt in values:
padx=10
pady=10
if(i==6):
row=2
col=0
if(i==12):
row=3
col=0
if(i==18):
row=4
col=0
if(i==24):
row=5
col=0
if(i==30):
row=6
col=0
if(txt=='='):
btn=Button(window,height=2,width=4,padx=50,pady=pady,text=txt,command=lambda txt=txt:self.equals())
btn.grid(row=row,column=col,columnspan=3,padx=2,pady=2)
btn.configure(background="yellow")
elif(txt=='DEL'):
btn=Button(window,height=2,width=4,padx=padx,pady=pady, text=txt ,command=lambda txt=txt:self.delete())
btn.grid(row=row,column=col,padx=1,pady=1)
btn.configure(background="grey")
elif(txt=='C'):
btn=Button(window,height=2,width=4,padx=padx,pady=pady,text=txt,command=lambda txt=txt:self.clearall())
btn.grid(row=row,column=col,padx=1,pady=1)
btn.configure(background="red")
else:
btn=Button(window,height=2,width=4,padx=padx,pady=pady,text=txt ,command=lambda txt=txt:self.addChar(txt))
btn.grid(row=row,column=col,padx=1,pady=1)
btn.configure(background="white")
col=col+1
i=i+1
window.mainloop()
def clearall(self):
self.string.set("")
def equals(self):
result=""
try:
result=eval(self.string.get())
self.string.set(result)
except:
result="无效输入"
self.string.set(result)
def addChar(self,char):
i = ['log','sqrt','pi','sin','cos','tan','e',"gcd","radians","degrees","ceil","hypot"]
if char in i:
self.string.set(self.string.get()+'math.'+(str(char)))
else:
self.string.set(self.string.get()+(str(char)))
def delete(self):
self.string.set(self.string.get()[0:-1])
calculator()
我们不需要制定计算规则python 科学计算,我们将输入的表达式转换成python可以理解的意思(通过eval()函数),它就会帮助我们完成计算。 我们需要做的就是添加功能并告诉 python 如何执行此功能。 遇到非内置函数,也就是pytohn本身不会。 我们需要导入math包python 科学计算,然后告诉python如何调用它。
经测试,所有计算功能均正常,运行完美。 为了让它直接在电脑上运行,我们把它打包成一个exe,这样我们的科学计算器即使在没有python环境的电脑上也可以直接运行。
有不懂的可以私信我,欢迎来‘骚扰’。 只需获取您需要的代码并使用它。
效果图:
所见即所得,功能一应俱全。