用python实现简单计算器

本文目录
1.功能目标
2.解题思路
3.关键函数说明
4.界面以及结果展示

一.功能目标

用户选择不同的功能实现不同的计算结果

1.标准计算

用户输入+, -, *, /,pow,sqrt等不同的按钮进行不同的计算

2.解方程运算

用户根据提示格式输入方程参数
a.解二元一次方程
b.解三元一次方程
c.解一元二次方程
d.解一元三次方程

二.解题思路

1.判断按下的数字按键还是功能按键,需要一个值进行判断
2.可以使用eval函数进行标准运算
3.使用sympy模块进行方程的解运算

eval函数参考:

https://www.runoob.com/python/python-func-eval.html

sypmy模块的使用参考:

https://blog.csdn.net/weixin_34352005/article/details/92949596#%E4%B8%80%E6%B1%82%E8%A7%A3%E5%A4%9A%E5%85%83%E4%B8%80%E6%AC%A1%E6%96%B9%E7%A8%8B-solve

本文参考了此文章的实现:

https://blog.csdn.net/cui_yonghua/article/details/104129520?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

三.关键函数说明

开方运算

def f_sqrt(self):strnum = float(self.result.get())endnum = math.sqrt(strnum)self.result.set(str(endnum))if self.lists != 0:self.ispresssign = Trueself.lists.clear()

幂运算

def f_pow(self):num_one = float(self.lists.pop())num_two = float(self.result.get())self.ispresssign = Truevalue = math.pow(num_one, num_two)self.result.set(str(format(value, '.6f')))self.lists.clear()

解方程的几个函数都使用float类型
解二元一次方程
用sympy模块的solve方法实现

def t_count(self):aone = float(self.entry_a1.get())bone = float(self.entry_b1.get())cone = float(self.entry_c1.get())atwo = float(self.entry_a2.get())btwo = float(self.entry_b2.get())ctwo = float(self.entry_c2.get())x = sy.Symbol('x')y = sy.Symbol('y')t_result = sy.solve([aone*x + -1*cone + bone*y, atwo*x + -1*ctwo + btwo*y])        if x in t_result and y in t_result:self.result_x.set(t_result[x])self.result_y.set(t_result[y])elif x in t_result or y in t_result:self.result_x.set('无唯一解')self.result_y.set('无唯一解')else:self.result_x.set('无解')self.result_y.set('无解')

解三元一次方程与二元一次方程类似

def f_count_two(self):aone = float(self.tentry_a1.get())bone = float(self.tentry_b1.get())cone = float(self.tentry_c1.get())done = float(self.tentry_d1.get())atwo = float(self.tentry_a1.get())btwo = float(self.tentry_b2.get())ctwo = float(self.tentry_c2.get())dtwo = float(self.tentry_d2.get())athree = float(self.tentry_a3.get())bthree = float(self.tentry_b3.get())cthree = float(self.tentry_c3.get())dthree = float(self.tentry_d3.get())x = sy.Symbol('x')y = sy.Symbol('y')z = sy.Symbol('z')f1 = aone*x + bone*y + cone*z + -1*donef2 = atwo*x + btwo*y + ctwo*z + -1*dtwof3 = athree*x + bthree*y + cthree*z + -1*dthreet_resultTwo = sy.solve([f1, f2, f3], [x, y, z])if x in t_resultTwo and y in t_resultTwo and z in t_resultTwo:self.tresultX.set(t_resultTwo[x])self.tresultY.set(t_resultTwo[y])self.tresultZ.set(t_resultTwo[z])elif x in t_resultTwo or y in t_resultTwo or z in t_resultTwo:self.tresultX.set('无唯一解')self.tresultY.set('无唯一解')self.tresultZ.set('无唯一解')else:self.tresultX.set('无解')self.tresultY.set('无解')self.tresultZ.set('无解')

解一元二次方程

a = float(self.entry_a.get())b = float(self.entry_b.get())c = float(self.entry_c.get())x = sy.Symbol('x')tResult = sy.solve(a*x**2 + b*x + -1*c, x)if tResult:if len(tResult) == 2:self.resultX1.set(tResult[0])self.resultX2.set(tResult[1])if len(tResult) == 1:self.resultX1.set(tResult[0])self.resultX2.set(tResult[0])else:self.resultX1.set("无解")self.resultX2.set("无解")

解三元一次方程

def fCount(self):a = float(self.fentry_a.get())b = float(self.fentry_b.get())c = float(self.fentry_c.get())d = float(self.fentry_d.get())x = sy.Symbol('x')f = a*x**3 + b*x**2 + c*x + 1*dfResult = sy.solve(f, x)if fResult:if len(fResult) == 3:self.fresultX1.set(fResult[0])self.fresultX2.set(fResult[1])self.fresultX3.set(fResult[2])elif len(fResult) == 1:self.fresultX1.set(fResult[0])self.fresultX2.set(fResult[0])self.fresultX3.set(fResult[0])else:self.fresultX1.set("无解")self.fresultX2.set("无解")self.fresultX3.set("无解")

四.界面以及结果展示

1.标准模式界面

2.二元一次方程界面

3.三元一次方程的界面

4.一元二次方程界面

5.一元三次方程的求解

总结

这份计算器使用了tkinter界面库进行显示,不过python的自带界面库和java一样都太简陋了,不过做个简单的界面问题不大。
使用python的eval函数方便直接进行计算,python具有丰富的库资源的确可以很大程度上帮助完成功能,不过也不能放弃自己的思考,所以这份计算器应该还能继续改进。
此计算器存在一定的问题,如果结果的位数超过label可以显示的范围,就无法看到头几位的结果,这个暂时没有想到如何解决。

python图像化计算器相关推荐

  1. PyQt5 图形界面 - Qt Designer独立安装包,仅需30M!python图像化界面绘制工具

    工具获取: 小蓝枣的 csdn 资源仓库 如果用来设计 python 图形化界面可以看下面的文档: PyQt5 图形界面-用 Qt Designer 来设计 UI 界面,并转化为 python 代码运 ...

  2. 低通滤波器算法LPF的python图像化验证

    低通滤波器电路在电路中很常见,在算法上也用过几次,但一直缺少太系统的研究.最近比较闲,拿出来耍耍. 一.基本原理 简单的一阶低通滤波器如下图所示: 由上图有:  和 替换输入和输出电压,用代换,用代换 ...

  3. python图像音频处理-通过图像傅里叶变换判断相位和幅度的重要性

    python图像音频处理-判断相位和幅度的重要性 这一步骤思想很简单.分别将两个图像或两个音频做FFT,再选取图像1/音频1的幅度,结合上图像2/音频2的相位,再做IFFT.看返回的图像或音频更接近图 ...

  4. 3.2 Python图像的频域图像增强-高通和低通滤波器

    3.2 Python图像的频域图像增强-高通和低通滤波器 文章目录 3.2 Python图像的频域图像增强-高通和低通滤波器 1 算法原理 1.1理想滤波器 1.2巴特沃斯滤波器 1.3指数滤波器 2 ...

  5. Python中的图像处理(第十一章)Python图像锐化及边缘检测(1)

    Python中的图像处理(第十一章)Python图像锐化及边缘检测(1) 前言 一. Python准备 二. Python仿真 三. 小结 前言 随着人工智能研究的不断兴起,Python的应用也在不断 ...

  6. Python -- 图像的手绘风格

    ** Python – 图像的手绘风格 ** 今天在mooc上了解到python可以做出手绘风格的图片,感觉很惊奇,很想知道python对于图片是如何处理的,因此上网搜了一些博主的文章,总结了一下. ...

  7. 2.3 Python图像的空域增强处理-直方图修正

    2.3 Python图像的空域增强处理-直方图修正 文章目录 2.3 Python图像的空域增强处理-直方图修正 1 算法原理 2 代码 3 效果 1 算法原理 直方图均衡化算法和直方图规定化 对于灰 ...

  8. 2.1 Python图像的空域增强处理-灰度映射

    2.1 Python图像的空域增强处理-灰度映射 文章目录 2.1 Python图像的空域增强处理-灰度映射 1 算法原理 2 代码 3 效果 空域增强处理,包括给定变化曲线的灰度映射(求反.动态范围 ...

  9. 【OpenCV-Python】:Canny边缘检测的图像化与数值化直观显示

    首先给出Canny边缘检测的代码! import cv2img = cv2.imread('C:\\Users\\Wxr\\Desktop\\21.jpg', cv2.IMREAD_GRAYSCALE ...

  10. pythonopencv读取图像属性_2、OpenCV Python 图像属性获取

    __author__ = "WSX" import cv2 as cv import numpy as np image = cv.imread("1.JPG" ...

最新文章

  1. testng入门_单元测试
  2. Shiro.ini文件概述
  3. 超图空间数据模型概要1
  4. [搜索]一种分词的实现(2)
  5. 【PAT乙级】1036 跟奥巴马一起编程 (15 分)
  6. python matplotlib.pyplot plt.ioff()函数(关闭交互模式用于阻塞程序,不让图片关闭)
  7. linux判断压缩文件类型,【shell】判断压缩包类型并解压
  8. [vue] vue过渡动画实现的方式有哪些?
  9. HTML5中的audio在手机端和微信端的不能自动播放
  10. Android 串口开发,发送串口命令,读卡,反扫码,USB通讯,实现demo。——持续更新
  11. 生信宝典被分享最多的15篇文章
  12. 基于Matlab的跨孔CT胖射线追踪算法(三)
  13. bzoj2244 [SDOI2011]拦截导弹 cdq分治
  14. python 流程控制基础知识总结 和九九乘法表、质数、水仙花数、猜拳游戏练习
  15. eucalyptus 云平台搭建
  16. cygwin 复制粘贴
  17. 【NLP】Pre-train,Prompt,and Predict
  18. 手机电脑同步投屏演示工具-Wormhole
  19. 【原理图】电路中的VCC VDD VSS VEE GND含义 以及STM32电源
  20. 一号店首页代码需其他的联系我

热门文章

  1. Windows蓝屏代码查询(Bug Check Code)
  2. 计算机信息技术身边的具体应用案例,2016信息技术案例分析.doc
  3. “物联网开发实战”学习笔记-(一)硬件开发环境的搭建
  4. 80套基于PHP+MYSQL 的毕设设计(系统+论文)
  5. swapidc卡密充值插件
  6. 浙江工业大学计算机学院的博士招生,浙江工业大学计算机科学与技术学院、软件学院...
  7. windows服务器虚拟机 全屏,虚拟机安装Windowsxp系统后无法全屏的解决方法
  8. TCN-时间卷积网络
  9. EditPlus 3 网页中文乱码问题
  10. 仿360加速球。(实现内存释放)