python实现计算器】的更多相关文章

<从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找IDLE程序的图标. 上一讲我们还见到了Python的两种工作模式,交互模式和程序模式. 通常在一个大型的系统中,程序模式是必然的选择.因为一个完整的项目,都需要大量的准备工作.为很多运算的必要条件准备最初的值(专有名词也叫"初始化"),接下来的运算也往往逻辑复杂,需要作出多种选择和频繁的组合…
计算器功能 实现优先级解析,加减乘除四则运算 自定义小数位精度 实现思想: 先找到最里层括号,根据乘除,加减优先级,调用写好的乘除.加减运算函数算出括号内总值,再将原括号式用所得值替换,此过程循环进行,直到去除所有括号,得到一个只剩加减乘除的运算式. 再次调用乘除加减函数算出结果. 实现方法: 正则匹配出最里层括号 括号内先算乘除后算加减,算出结果替换原括号字符串,循环执行 乘除:正则匹配出 ([-]num1) ([*\/]) ([-]num2) 分组,findall查找得到 [('2', '*…
作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后在武SIR的代码基础上加了指数.求余等功能. 该计算器思路: 1.递归寻找表达式中只含有 数字和运算符的表达式,并计算结果 2.由于整数计算会忽略小数,所有的数字都认为是浮点型操作,以此来保留小数使用技术: 1.正则表达式 2.递归 二.流程图: 三.代码: #!/usr/bin/python27…
通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3)/(16-3*2)) 我的处理计算基本思路是: 解题思路是,需要优先处理内层括号运算--外层括号运算--先乘除后加减的原则:1.正则处理用户输入的字符串,然后对其进行判断,判断计算公式是否有括号,有就先将计算公式进行正则处理,先获取最里层的每一个数据,然后一一计算 所要用到的正则是: inner…
说明 该计算器主要是为了练习正则表达式以及python基础所写:代码比较low! 运行过程 请输入你的计算公式, 计算器会将计算结果输出到屏幕上(此处会打印步骤); 退出(exit/quit) MyCalc> 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) ) 1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))…
让我们尝试一些简单的 Python 命令.启动解释器,等待界面中的提示符,>>> (这应该花不了多少时间). 3.1.1. 数字 解释器就像一个简单的计算器一样:你可以在里面输入一个表达式然后它会写出答案. 表达式的语法很直接:运算符 +.-.*./ 的用法和其他大部分语言一样(比如 Pascal 或者 C 语言):括号 (()) 用来分组.比如: >>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6)…
开发一个简单的python计算器 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 上图是实现的逻辑思路图,下面是对上图的分析: 整体的思想就是先匹配最小的括号例如…
这个是从网上搜到的Python小项目之计算器(原文地址:http://www.2cto.com/kf/201402/279637.html).但该段代码估计是Python 2 写的. 如果你使用的程序是Python 3以上版本,需要自行安装pillow.Windows可以在命令行中使用pip install pillow. 但是在程序中引用时,pillow的名称依然是PIL.具体看下面的例子. [思考] 1.tkinter 编程要考虑哪些方面? 2.这个程序还有哪些不完善的?例如输入9+-2,看…
程序代码 # coding: utf-8# 将tkinter改为Tkinter兼容Python 2.xfrom tkinter import *class App: def __init__(self, master): self.master = master self.initWidgets() self.hi = None def initWidgets(self): # 创建一个输入组件 self.show = Label(relief=SUNKEN, font=('Courier Ne…
#!/usr/bin/env python # -*- coding:utf-8 -*- import re def chu(arg1): #定义加减 arg = arg1[0] #beacuse price is a list ,so index 0 arg = arg.replace('--', '+').replace('++', '+').replace('-+', '-').replace('+-', '-') #重点重点重点:就是对负数的一个替换 # r = '-9-2-5-7588…
学习python过程中的作业.实现了+.-.×./.及幂运算,支持括号优先级. 代码为python3.5 import re def formatEquation(string): string = string.replace("--", "+") string = string.replace("-+", "-") string = string.replace("++", "+")…
在交互模式中,最近一个表达式的值赋给变量 _.这样我们就可以把它当作一个桌面计算器,很方便的用于连续计算.例如: >>> price = 1.25 #声明变量price >>> price * 10 #最近的表达式 12.5 >>> price +_ #等价于1.25+12.5 13.75 >>> round(_,1) #等价于round(13.75,1) 13.8…
1 业务需求 1.1 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致. 2 业务逻辑 2.1 首先获取用户输入,处理非法字符,处理空格 2.2 匹配括号,找到括号内部计算公式 2.3 先计算乘除,再计…
import tkinter import tkinter.messagebox import math ''' 波波版计算器可实现的功能 1.能进行简单的加减惩处 2.能进行开根号操作 3.能进行后退操作,但不完美 4.能进行清空操作 5.可以连续开根号 解决的bug 5.连续错按运算符号之后按最后一个运算符运算 6.连续按等于号可以连乘3×3=9 再按等号9再一次×3 7.不能连续按点号,否则无效 8.除数不能为0 9.连续按正负号,面板中的数字变号 注意: 10.显示面板只能显示16个符号…
import re def format_string(s): # 对表达式进行格式化 s = s.replace(' ', '') s = s.replace("--", "+") s = s.replace("++", "+") s = s.replace("+-", "-") s = s.replace("*+", "*") s = s.re…
参考:https://www.cnblogs.com/alex3714/articles/5169958.html import re ret = re.search('\([^()]+\)','(1+(2+5)*2)')# '\([^()]+\)' 这其中不能有空格,否则将去匹配空格,无法找到想找的元素 print(ret.group()) 执行结果: (2+5) Process finished with exit code 0 寻找括号最里层运算. day19.day20…
import re def strip_operate(exp): # 合并多余的操作符 exp = exp.replace("+-", "-") exp = exp.replace("--", "+") return exp def cal_exp_son(exp_son): # 计算两数的乘除 if "/" in exp_son: a, b = exp_son.split("/")…
import sysdef lt(a, b, c ): if b == "+": return int(a)+int(c) elif b == "-": return int(a)-int(c) elif b == "*": return int(a)*int(c) elif b == "/": return int(a)/int(c)print(lt(sys.argv[1],sys.argv[2],sys.argv[-1])…
例子:计算1+2+3+4的值 代码: class Buffer(object): """字符串处理函数""" def __init__(self, str_value): self._str_value = str_value self._off_set = def peek(self): if self._off_set >= len(self._str_value): return None else: return self._str…
from __future__ import division import sys from math import * from PyQt4.QtCore import * from PyQt4.QtGui import * class Form(QDialog): def __init__(self,parent=None): super(Form,self).__init__(parent) self.browser=QTextBrowser() self.Lineedit=QLineE…
1.基本的加减乘除与取余运算 >>> print(5+10) 15 >>> print(5-10) -5 >>> print(5*10) 50 >>> print(10/5) 2.0 >>> print(5%3) 2 补充:如果想保留位数需要用到round函数(如果不指定的话默认取整) >>> print(100/10) 10.0 >>> print(round(100/10))…
import re formul='1 - 2 *( (6 0- 30+(0-40/5) * (9-2* 5/3 +7 /3*99/4*2998 +10 *568/14)) - (-4*3) / (16-3*2))' def zhengli(func): func = func.replace("+-","-").replace("--","+") return func def addjian(func): func = f…
import re # 格式化字符串函数(消除一些错误的格式) def format_string(string): # 一系列的替换语句 string = string.replace("--", "-") string = string.replace("-+", "-") string = string.replace("++", "+") string = string.repl…
import re """ 过程:(最内部的括号->先乘除,替换->整理表达式->加减)->替换 """ def multiply_divide(exp): # 计算乘除 if '/' in exp: a, b = exp.split('/') return str(float(a)/float(b)) if '*' in exp: a, b = exp.split('*') return str(float(a)*flo…
match.search.findall.group(s) 区别 import re # match findall经常用 # re.match() #从开头匹配,没有匹配到对象就返回NONE # re.search() #浏览全部字符,匹配第一个符合规则的字符串 # re.findall() # 将匹配到的所有内容都放置在一个列表中 一.match有两种情况 -------  有分组 ------取匹配到的正则再次取其部分内容 origin = "hello alex sadf dsaf&qu…
最近要处理个简单数据,一个字段中为文本类型,包含各种描述.要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来. 比如 字段值为 “非法占用100平方米” 处理后结果为 100 字段值为 “工棚3间” 处理结果为0 字段值为 “工棚3间,瓦屋2间,非法占用100平方米” 处理结果100 字段值为 “工棚100平方米,瓦屋100平方米” 处理结果为200 由于一直写.net,上述功能在.net中做起来并不麻烦.但是觉得应该是字段计算器写写就解决的问题,懒得在用.net搭.就尝…
运算补充(因为之前看书看过的我又忘了...) python3 里 / 直接是浮点除.python2的 / 是直接整除,取整数部分,小数不要了,python3也可以这样整除,用//实现. **是乘方!!!3**2=8.这个运算符有点个性啊. 比起左侧的操作符优先级高,比右侧优先级低.看图: 第一句**比左侧优先级高,因此先乘方再加负号. 第二句**比右侧优先级低,因此先加负号再乘方. 其实跟我们自己来算是一样的,但是就是想夸一下python,就我学到的知识,光运算和懒逻辑这两点就让我觉得它比我的脑…
Python的安装 访问http://www.python.org 点击downloads,选择Windows 我在这里选择了Latest Python 3 Release - Python 3.5.2最新的Python3版本的Python3.5.2 下拉到files,选择Windows x86 executable installer,下载 安装很简单,双击下载的文件,选择安装即可 安装后,按照开始→程序→Python3.5.2→IDLE运行Python集成开发环境(按F1会启动完整的Pyth…