python3.5仿微软计算器程序


Posted in Python onMarch 30, 2020

本文实例为大家分享了python3.5仿微软计算器的具体代码,供大家参考,具体内容如下

from tkinter import *
from math import *
root = Tk()
root.title("计算器")
root.geometry("1200x260+0+0")
 
 
def come(event):
 event.widget["background"]= "orange"#event的widget方法,恩,恩,值得看看
def go(event):
 event.widget["background"] = "#%02x%02x%02x" % (240,240,240)#实现RGB和十六进制的换算
def num1():
 text.insert(END,1)
def num2():
 text.insert(END,2)
def num3():
 text.insert(END,3)
def num4():
 text.insert(END,4)
def num5():
 text.insert(END,5)
def num6():
 text.insert(END,6)
def num7():
 text.insert(END,7)
def num8():
 text.insert(END,8)
def num9():
 text.insert(END,9)
def num0():
 if text.get(END) =="/":
  messagebox.showinfo(title ="除数不能为零")
 else:
  text.insert(END,0)
def dot_it():
 text.insert(END,".")
  
def Addnum():
 if text.get(1.0,END):
  text.insert(END,"+")
def minus_num():
 if text.get(1.0,END):
  text.insert(END,"-")
def times_num():
 if text.get(1.0,END):
  text.insert(END,"*")
def div_num():
 if text.get(1.0,END):
  text.insert(END,"/")
  
def equal_it():#可以使用text的search方法排除除法和开根号的例外
 global list_power,x,list_log,xylog
 se = text.get(1.0,END)
 if se:
  if "/" in text.get(1.0,END):
   div_pos = text.search("/",1.0,END)
   pos = div_pos.split(".")
   text_row = pos[0]
   text_column = pos[1]
   newpos = "%d.%d" % (int(text_row),int(text_column)+1)
   cool = eval(text.get(newpos,END))
   if cool == 0:
    text_alert.insert(1.0,"被除数不能为零")
    return
   else:
    se = eval(se)
    text.delete(1.0,END)
    text.insert(1.0,se)
  elif xypower==True:#通过设全局变量为哨兵,看函数是否被调用
   list_power.append(eval(se))
   text.delete(1.0,END)
   text.insert(1.0,pow(list_power[0],list_power[1]))
   list_power = []
  elif xylog ==True:
   list_log.append(eval(se))
   text.delete(1.0,END)
   text.insert(1.0,log(list_log[1],list_log[0]))
   list_log = []
    
    
  else:
   se = eval(se)
   text.delete(1.0,END)
   text.insert(1.0,se)
 else:
  text.delete(1.0,END)
def negative():
 text.insert(END,"-")
def Square_root():
 if eval(text.get(1.0,END))>=0:
  rootit =sqrt(eval(text.get(1.0,END)))
  text.delete(1.0,END)
  text.insert(1.0,rootit)
def Per():
 if text.get(1.0,END):
  num = eval(text.get(1.0,END))
  text.insert(END,"%")
  newnum = num*0.01
  text.delete(1.0,END)
  text.insert(1.0,newnum)
 
def Reci_num():
 #text.get(1.0,"%s-2c" % END).strip("\n")
 #if text.get(1.0,"%s-1c" % END).isdigit():
  # if type(aa)==type(bb) 可以用来判断数据类型
  # if type(aa)==type(1)
  #if type(aa)==type("我")
  #if type(aa)==type(3.14)
 if eval(text.get(1.0,END))!=0:
  num = eval(text.get(1.0,END).strip("\n"))
  num = 1/num
  text.delete(1.0,END)
  text.insert(1.0,num)
 else:
   text_alert.insert(1.0,"零不能求倒数")
  
def C():
 global memorylist,list_power,list_log# global的用法
 text.delete(1.0,END)
 text_alert.delete(1.0,END)
 memorylist = []
 list_power = []
 list_log =[]
  
def CE():
 text.delete(1.0,END)
 text_alert.delete(1.0,END)
def delete_onechar():
 text.delete("%s-1c" % INSERT,INSERT)#字符index的移动
def Mc():
 global memorylist
 memorylist = []
def Ms():
 global memorylist
 memorylist.append(eval(text.get(1.0,END)))
 text.delete(1.0,END)
def M_plus():
 global memorylist
 global m_plus
 m_plus = True
 memorylist.append(eval(text.get(1.0,END)))
 text.delete(1.0,END)
 return True
def M_minus():
 global memorylist
 global m_minus
 m_minus =True
 memorylist.append(eval(text.get(1.0,END)))
 text.delete(1.0,END)
 return True
def Mr():
 global memorylist
 global m_plus
 global m_minus
 text.delete(1.0,END)
 if m_plus == True:
  sum1 =0
  for i in range(len(memorylist)):
   sum1 = sum1 + memorylist[i]
  memorylist =[]
  memorylist.append(sum1)
  text.insert(1.0,sum1)
 elif m_minus == True:
  difference = 0
  for i in range(len(memorylist)):
   difference = memorylist[i]-difference
  difference = - difference
  memorylist.append(difference)
  text.insert(1.0,difference)
def angle_radio():
 text.delete(1.0,END)
 global angle_is
 angle_is =True
   
def radium_radio():
 text.delete(1.0,END)
 global radium_is
 radium_is =True
def angle_choice():
 global x
 if angle_is == True:
  x = pi*eval(text.get(1.0,END))/180
 if radium_is == True:
  x = eval(text.get(1.0,END))
def circle_ratio():
 text.insert(END,pi)
def sin_x():
 global x
 angle_choice()
 text.delete(1.0,END)
 text.insert(1.0,sin(x))
  
def cos_x():
 global x
 angle_choice()
 text.delete(1.0,END)
 text.insert(1.0,cos(x))
  
def tan_x():
 angle_choice()
 if x == 90 or x == pi/2:
  text_alert.insert(1.0,"正切角度不能为90度或π/2弧度")
  return
 else:
  text.delete(1.0,END)
  text.insert(1.0,tan(x))
  
def square_it():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,pow(temp,2))
def x_ypower():
 global list_power,x,xypower
 xypower =True
 x = eval(text.get(1.0,END))
 list_power.append(x)
 text.delete(1.0,END)
def tri_power():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,pow(temp,3))
def Bracket_left():
 text.insert(END,"(")
def Bracket_right():
 text.insert(END,")")
def nature_log():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,log1p(temp))
def deci_log():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,log10(temp))
def bina_log():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,log2(temp))
def y_based_on_x_log():
 global list_log,x,xylog
 xylog =True
 x = eval(text.get(1.0,END))
 list_log.append(x)
 text.delete(1.0,END)
def natur_const():
 text.insert(END,e)
def anti_sin():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,asin(temp)*180/pi)
def anti_cos():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,acos(temp)*180/pi)
def anti_tan():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,atan(temp)*180/pi)
def sqrt_num():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,sqrt(temp))
def tri_root():
 temp = eval(text.get(1.0,END))
 text.delete(1.0,END)
 text.insert(1.0,pow(temp,1/3))
  
def standard():
 MC = Button(root,text ="MC",width =10,command = Mc)
 MC.bind("<Enter>",come)
 MC.bind("<Leave>",go)
 MC.grid(row=2,column =0,sticky =W,padx =1)
 MR = Button(root,text ="MR",width =10,command = Mr)
 MR.grid(row=2,column =1,stick = W,padx =1)
 MR.bind("<Enter>",come)
 MR.bind("<Leave>",go)
 MS = Button(root,text ="MS",width =10,command =Ms)
 MS.grid(row=2,column =2,sticky =W,padx =1)
 MS.bind("<Enter>",come)
 MS.bind("<Leave>",go)
 M_ADD = Button(root,text ="M+",width =10,command =M_plus)
 M_ADD.grid(row=2,column =3,sticky =W,padx =1)
 M_ADD.bind("<Enter>",come)
 M_ADD.bind("<Leave>",go)
 M_ADD.bind("<>")
 M_Minus = Button(root,text ="M-",width =10,command =M_minus)
 M_Minus.grid(row=2,column =4,sticky =W,padx =1)
 M_Minus.bind("<Enter>",come)
 M_Minus.bind("<Leave>",go)
 
 DEL = Button(root,text ="→",width =10,command =delete_onechar)
 DEL.grid(row=3,column =0,sticky =W,padx =1)
 DEL.bind("<Enter>",come)
 DEL.bind("<Leave>",go)
 CEbtn = Button(root,text ="CE",width =10,command =CE)
 CEbtn.grid(row=3,column =1,sticky =W,padx =1)
 CEbtn.bind("<Enter>",come)
 CEbtn.bind("<Leave>",go)
 Cbtn = Button(root,text ="C",width =10,command =C)
 Cbtn.grid(row=3,column =2,sticky =W,padx =1)
 Cbtn.bind("<Enter>",come)
 Cbtn.bind("<Leave>",go)
 negativ = Button(root,text ="负号 - ",width =10,command = negative)
 negativ.grid(row=3,column =3,sticky =W,padx =1)
 negativ.bind("<Enter>",come)
 negativ.bind("<Leave>",go)
 sqr_root = Button(root,text ="平方根√",width =10,command =Square_root )
 sqr_root.grid(row =3,column =4,sticky =W,padx =1)
 sqr_root.bind("<Enter>",come)
 sqr_root.bind("<Leave>",go)
 
 
 btn7 = Button(root,text =7,width =10,command = num7)
 btn7.grid(row=4,column =0,sticky =W,padx =1)
 btn7.bind("<Enter>",come)
 btn7.bind("<Leave>",go)
 btn8 = Button(root,text =8,width =10,command = num8)
 btn8.grid(row=4,column =1,sticky =W,padx =1)
 btn8.bind("<Enter>",come)
 btn8.bind("<Leave>",go)
 btn9 = Button(root,text =9,width =10,command = num9)
 btn9.grid(row=4,column =2,sticky =W,padx =1)
 btn9.bind("<Enter>",come)
 btn9.bind("<Leave>",go)
 div = Button(root,text ="除法 /",width =10,command = div_num)
 div.grid(row=4,column =3,sticky =W,padx =1)
 div.bind("<Enter>",come)
 div.bind("<Leave>",go)
 per = Button(root,text ="百分之 %",width =10,command =Per)
 per.grid(row=4,column =4,sticky =W,padx =1)
 per.bind("<Enter>",come)
 per.bind("<Leave>",go)
 
 btn4 = Button(root,text =4,width =10,command = num4)
 btn4.grid(row=5,column =0,sticky =W,padx =1)
 btn4.bind("<Enter>",come)
 btn4.bind("<Leave>",go)
 btn5 = Button(root,text =5,width =10,command = num5)
 btn5.grid(row=5,column =1,sticky =W,padx =1)
 btn5.bind("<Enter>",come)
 btn5.bind("<Leave>",go)
 btn6 = Button(root,text =6,width =10,command = num6)
 btn6.grid(row=5,column =2,sticky =W,padx =1)
 btn6.bind("<Enter>",come)
 btn6.bind("<Leave>",go)
 times = Button(root,text ="乘法 ×",width =10,command = times_num)
 times.grid(row=5,column =3,sticky =W,padx =1)
 times.bind("<Enter>",come)
 times.bind("<Leave>",go)
 reciprocal = Button(root,text ="倒数 1/x",width =10,command =Reci_num)
 reciprocal.grid(row=5,column =4,sticky =W,padx =1)
 reciprocal.bind("<Enter>",come)
 reciprocal.bind("<Leave>",go)
 
 
 btn1 = Button(root,text =1,width =10,command = num1)
 btn1.grid(row=6,column =0,sticky =W,padx =1)
 btn1.bind("<Enter>",come)
 btn1.bind("<Leave>",go)
 btn2 = Button(root,text =2,width =10,command = num2)
 btn2.grid(row=6,column =1,sticky =W,padx =1)
 btn2.bind("<Enter>",come)
 btn2.bind("<Leave>",go)
 btn3 = Button(root,text =3,width =10,command = num3)
 btn3.grid(row=6,column =2,sticky =W,padx =1)
 btn3.bind("<Enter>",come)
 btn3.bind("<Leave>",go)
 minus = Button(root,text ="减 - ",width =10,command =minus_num )
 minus.grid(row=6,column =3,sticky =W,padx =1)
 minus.bind("<Enter>",come)
 minus.bind("<Leave>",go)
 equal = Button(root,text ="=",width =10,height =3,command = equal_it)
 equal.grid(row=6,column =4,sticky =W,padx =1,rowspan =2)
 equal.bind("<Enter>",come)
 equal.bind("<Leave>",go)
 
 btn0 = Button(root,text =0,width =22,height =1,command = num0)
 btn0.grid(row=7,column =0,sticky =W,padx =1,columnspan =2)
 btn0.bind("<Enter>",come)
 btn0.bind("<Leave>",go)
 dot = Button(root,text =".",width =7,font =("Times","14"),height =1,command =dot_it)
 dot.grid(row=7,column =2,sticky =W,padx =1)
 dot.bind("<Enter>",come)
 dot.bind("<Leave>",go)
 add = Button(root,text ="加 +",width =10,command = Addnum)
 add.grid(row=7,column =3,sticky =W,padx =1)
 add.bind("<Enter>",come)
 add.bind("<Leave>",go)
 
def sci():
 v =IntVar()
 angle = Radiobutton(root,text = "角度",variable =v,value =1,command =angle_radio)
 angle.grid(row=0,column=6)
 radium = Radiobutton(root,text = "弧度",variable =v,value =2,command =radium_radio )
 radium.grid(row=0,column=7)
 
 sinaa = Button(root,text = "Sin(x)",width =18,command = sin_x)
 sinaa.grid(row = 1,column =6)
 sinaa.bind("<Enter>",come)
 sinaa.bind("<Leave>",go)
 cosaa = Button(root,text = "COS(x)",width =18,command = cos_x)
 cosaa.grid(row =1,column =7)
 cosaa.bind("<Enter>",come)
 cosaa.bind("<Leave>",go)
 tanaa = Button(root,text = "tan(x)",width =18,command =tan_x)
 tanaa.grid(row = 1,column =8)
 tanaa.bind("<Enter>",come)
 tanaa.bind("<Leave>",go)
 x_square = Button(root,text = "x的平方",width =18,command = square_it)
 x_square.grid(row =2,column =6)
 x_square.bind("<Enter>",come)
 x_square.bind("<Leave>",go)
 X_Ytimes = Button(root,text = "x的Y次方",width =18,command =x_ypower)
 X_Ytimes.grid(row = 2,column =7)
 X_Ytimes.bind("<Enter>",come)
 X_Ytimes.bind("<Leave>",go)
 X_tri= Button(root,text = "x的三次方",width =18,command = tri_power)
 X_tri.grid(row = 2,column =8)
 X_tri.bind("<Enter>",come)
 X_tri.bind("<Leave>",go)
 
 leftbra = Button(root,text = "左括号 ( ",width =18,command = Bracket_left)
 leftbra.grid(row = 3,column =6)
 leftbra.bind("<Enter>",come)
 leftbra.bind("<Leave>",go)
 rightbra = Button(root,text = "右括号 )",width =18,command = Bracket_right)
 rightbra.grid(row =3,column =7)
 rightbra.bind("<Enter>",come)
 rightbra.bind("<Leave>",go)
 natural_logs = Button(root,text = "自然对数 In(x)",width =18,command =nature_log)
 natural_logs.grid(row = 7,column =6)
 natural_logs.bind("<Enter>",come)
 natural_logs.bind("<Leave>",go)
 square_root = Button(root,text = "x的平方根",width =18,command = sqrt_num)
 square_root.grid(row =4,column =6)
 square_root.bind("<Enter>",come)
 square_root.bind("<Leave>",go)
 X_Yroot = Button(root,text = "x的Y次方根",width =18,command = x_ypower)
 X_Yroot.grid(row = 4,column =7)
 X_Yroot.bind("<Enter>",come)
 X_Yroot.bind("<Leave>",go)
 X_tri_root = Button(root,text = "x的三次方根",width =18,command = tri_root)
 X_tri_root.grid(row = 4,column =8)
 X_tri_root.bind("<Enter>",come)
 X_tri_root.bind("<Leave>",go)
 
 log10aa = Button(root,text = "以10为底的对数Logx",width =18,command =deci_log)
 log10aa.grid(row = 5,column =6)
 log10aa.bind("<Enter>",come)
 log10aa.bind("<Leave>",go)
 log2aa = Button(root,text = "以2为底的对数Logx",width =18,command =bina_log)
 log2aa.grid(row = 5,column =8)
 log2aa.bind("<Enter>",come)
 log2aa.bind("<Leave>",go)
 pow10 = Button(root,text = "以x为底,y为真数的logx",width =18,command =y_based_on_x_log)
 pow10.grid(row =5,column =7)
 pow10.bind("<Enter>",come)
 pow10.bind("<Leave>",go)
 radio = Button(root,text = "圆周率 π",width =18,command =circle_ratio)
 radio.grid(row = 7,column =7)
 radio.bind("<Enter>",come)
 radio.bind("<Leave>",go)
 natur_con = Button(root,text = "自然常数e",width =18,command =natur_const)
 natur_con.grid(row = 7,column =8)
 natur_con.bind("<Enter>",come)
 natur_con.bind("<Leave>",go)
 
 antisin = Button(root,text = "反三角正弦sin(-1)x",width =18,height =1,command =anti_sin)
 antisin.grid(row = 6,column =6)
 antisin.bind("<Enter>",come)
 antisin.bind("<Leave>",go)
 anticos = Button(root,text = "反三角余弦cos(-1)x",width =18,height =1,command =anti_cos)
 anticos.grid(row =6,column =7)
 anticos.bind("<Enter>",come)
 anticos.bind("<Leave>",go)
 antitan = Button(root,text = "反三角正切tan(-1)x",width =18,height =1,command = anti_tan)
 antitan.grid(row = 6,column =8)
 antitan.bind("<Enter>",come)
 antitan.bind("<Leave>",go)
 
###################
if __name__ == "__main__":
 ################################菜单设计
 standard_it =True
 sci_it = False
 static_it = False
 code_it = False
 memorylist = []
 m_plus = False
 m_minus = False
 angle_is = False
 radium_is = False
 x =0
 list_power = []
 list_log =[]
 xypower = False
 xylog = False
 text = Text(root,height =1,font = ("Times","20"),width =31,fg = "#%02x%02x%02x" % (46,150,67),bd =0)
 text.grid(row = 0,column =0,columnspan =6)
 text_alert = Text(root,height=1,width =31,fg = "red",font = ("Times","20"),bd = 0)
 text_alert.grid(row =1,column =0,columnspan =6)
 
 menubar = Menu(root)
 mode_menu = Menu(menubar,tearoff= 0)
 v_mode = IntVar()
 mode_menu.add_radiobutton(label = "标准型",variable = v_mode,value =0,command =standard)
 mode_menu.add_radiobutton(label = "科学型",variable = v_mode,value =1,command = sci)
 mode_menu.add_radiobutton(label = "程序员型",variable =v_mode,value =2)
 mode_menu.add_radiobutton(label = "统计型",variable = v_mode,value =3)
 
 mode_menu.insert_separator(7)
 v_his_math = IntVar()
 mode_menu.add_radiobutton(label = "历史记录",variable = v_his_math,value =0)
 mode_menu.add_radiobutton(label = "数字分组",variable = v_his_math,value =1)
 menubar.add_cascade(label = "查看",menu = mode_menu)
 
 mode_menu.insert_separator(11)
 v_transform = IntVar()
 mode_menu.add_radiobutton(label = "单位转换",variable =v_transform,value =1)
 
 edit = Menu(menubar)
 edit.add_command(label = "复制")
 edit.add_command(label = "黏贴")
 menubar.add_cascade(label = "编辑",menu = edit)
 
 helpm = Menu(menubar)
 helpm.add_command(label = "使用说明")
 helpm.add_command(label = "版本为1.0")
 menubar.add_cascade(label = "帮助",menu = helpm)
 root.config(menu = menubar)#有这句菜单栏才能正常工作
#########################################窗体设计
  
 standard()
  
 sci()
 root.mainloop()

更多计算器功能实现,请点击专题: 计算器功能汇总 进行学习

关于Android计算器功能的实现,查看专题:Android计算器 进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
测试、预发布后用python检测网页是否有日常链接
Jun 03 Python
django2 快速安装指南分享
Jan 05 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python文件拆分与重组实例
Dec 10 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python 类之间的参数传递方式
Dec 20 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
深入理解python多线程编程
Apr 18 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 #Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 #Python
Python实现TCP协议下的端口映射功能的脚本程序示例
Jun 14 #Python
浅谈python新手中常见的疑惑及解答
Jun 14 #Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 #Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 #Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 #Python
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
python加载自定义词典实例
2019/12/06 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
python map比for循环快在哪
2020/09/21 Python
一套带网友答案的.NET笔试题
2016/12/06 面试题
英语翻译系毕业生求职信
2013/09/29 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
保护野生动物倡议书
2014/05/16 职场文书
应急处置方案
2014/06/16 职场文书
会计试用期自我评价
2014/09/19 职场文书
2014年维稳工作总结
2014/11/18 职场文书
优秀团员事迹材料
2014/12/25 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
浅析Python中的套接字编程
2021/06/22 Python
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python