python 四则混合运算计算器
python 四则混合运算计算器
思路:(1)获取一个运算公式(四则混合)
(2)对获取的公式进行处理,因为Input获取的是字符串形式,这里处
理时将之转换成列表,并对其中包含的多位数进行处理.见DealFormula函数
(3)对处理后返回的计算式列以此进行先乘除后加减操作得到最终结果
附:这里的函数Fun_Mul,Fun_Div,Fun_Sub个人感觉能进行更适当的处理,
但由于水平问题,这里并没有进行优化,希望浏览的大神们能给出建议>
import time#获取程序运行时间
start = time.clock()
class Calculator(object):'''这是一个四则混合运算计算器'''def __init__(self):self.name = Calculatorself.formula=input('Please input formula:').strip()#让用户输入公式self.formula_list=[]#定以一个空列表def Fun_Mul(self):#计算公式中所有乘法运算i=0while i<len(self.formula_list):if self.formula_list[i] == '*' and (i+2)!=len(self.formula_list):Sum=int(self.formula_list[i-1])*int(self.formula_list[i+1])self.formula_list[(i-1):(i+2)]=[Sum]i=i-2elif self.formula_list[i] == '*' and (i+2)==len(self.formula_list):Sum=int(self.formula_list[i-1])*int(self.formula_list[i+1])self.formula_list[(i-1):]=[Sum] else:i=i+1def Fun_Div(self):#计算公式中所有除法运算i=0while i<len(self.formula_list):if self.formula_list[i] == '/' and (i+2)!=len(self.formula_list):Sum=int(self.formula_list[i-1])//int(self.formula_list[i+1])self.formula_list[(i-1):(i+2)]=[Sum]i=i-2elif self.formula_list[i] == '/' and (i+2)==len(self.formula_list):Sum=int(self.formula_list[i-1])//int(self.formula_list[i+1])self.formula_list[(i-1):]=[Sum] else:i=i+1def Fun_Sub(self):#计算公式中所有减法法运算i=0while i<len(self.formula_list):if self.formula_list[i] == '-' and (i+2)!=len(self.formula_list):Sum=int(self.formula_list[i-1])-int(self.formula_list[i+1])self.formula_list[(i-1):(i+2)]=[Sum]i=i-2elif self.formula_list[i] == '-' and (i+2)==len(self.formula_list):Sum=int(self.formula_list[i-1])-int(self.formula_list[i+1])self.formula_list[(i-1):]=[Sum] else:i=i+1def DealFormula(self):#将计算式由字符串转成列表,并对其包含的多位数进行处理self.formula_list=list(self.formula)sud=['+','-','*','/','(',')']num = 0Sum=''while num<len(self.formula_list):if self.formula_list[num].isdigit():Sum=Sum+self.formula_list[num]num=num+1if num==len(self.formula_list):buc=len(Sum)self.formula_list[(num-buc):num]=[Sum] continueelif self.formula_list[num] in sud:buc=len(Sum)self.formula_list[(num-buc):num]=[Sum]Sum=''num=num+1-(buc-1)continueelse:print('Input error')def main(self):#主函数,经过乘,除,减法运算后,计算式中只剩加法运算,对其进行累加self.DealFormula()self.Fun_Mul()self.Fun_Div()self.Fun_Sub()result = 0for number in self.formula_list:if number =='+':continueelse:result=result+int(number)print(result)calculator=Calculator()
calculator.main()
END=input('Enter any key to return')#防止程序闪退
end = time.clock()
print('Running time:' ,(end-start))
python 四则混合运算计算器相关推荐
- python 实现四则混合运算计算器
python 实现四则混合运算计算器 这个是基于四则混合运算计算器 Calculator的修改版,新增了处理()的功能 调试次数较少,应该尚有bug未发现,如果发现有Bug,欢迎大家来评论指正 四则混 ...
- 四则混合运算c语言程序例,C++实现四则混合运算计算器
本文实例为大家分享了C++实现四则混合运算的计算器,供大家参考,具体内容如下 计算器是带括号的四则运算实际上利用的是栈后进先出的原则 转换思想: #define _CRT_SECURE_NO_WARN ...
- js实现四则混合运算计算器
最近想用js做一个简单的计算器,不过网上的例子好像大部分都是直接从左到右挨个计算,就好像1+2*5,就会先计算1+2,再计算3*5,并没有实现运算符的优先级,这里找到了一种方法实现,来总结一下.不过这 ...
- c语言字符型计算器,求用c语言编程四则混合运算计算器?
#include #include #include char token[61]; /*存放表达式字符串的数组*/ int n=0; void error(void) /*报告错误函数*/ { pr ...
- java完善四则计算器_java 四则混合运算 计算器
public class Counter { /**用递归算法,把括号内的公式算出然后递归 * @param args */ public static void calculator (String ...
- 四则混合运算c语言程序例,用c语言编程四则混合运算计算器
满意答案 #include #include #include char token[61]; /*存放表达式字符串的数组*/ int n=0; void error(void) /*报告错误函数*/ ...
- 【数据结构】支持四则混合运算的计算器(转)
1.给出两个数,用户再指定操作符,要求计算结果,这实现起来很容易: 2.多个数,但只涉及同一优先级的操作符,做起来也很容易: 3.多个数,不同优先级的操作符,怎么办呢? 想想就头痛,不过还好前 ...
- php混合运算计算器,混合运算计算器
用计算器怎样计算加减乘除混合运算 第一点,有一个简单的计算器,显示屏幕比较大,而且按键比较大,比较简单,可以非常快的使用乘除混合运算. 第二点,可以将如下的一道题进行一次性运算:"(101* ...
- java简单运算程序_JAVA实现简单四则混合运算
JAVA实现简单四则混合运算,说明:该计算器支持实则混合运算,如 2*(3+1 )/ 4-3 *9+ 8/ 3*4- 5,则输出:-19.333332 需要说明的事括号必须是英文的.源码如下仅供学习: ...
最新文章
- list、tuple、set、dict 四大数据结构
- 坑爹的PHImageManager和PHImageRequestOptions
- 创建Servlet项目(IDEA版)
- python做动画视频教程_Python零基础入门动画教程
- vue项目:(全局变量设置与调用)API接口封装 - 代码篇
- C语言在STM32中的内存分配
- 位于 mscorlib.dll 中_带电粒子在匀强磁场中运动问题的四种类型
- 可恶的Java数组下标越界检查
- 【job】面试中常见的笔试梳理
- LINUX设备驱动模型之class
- php 判断来访客户端是否移动设备
- 微信小程序不同类型demo集合含源码
- Knockout开发中文API系列1
- 一道题带你认识ACM竞赛
- STM32F4应用-串口通信
- 计蒜客--蒜头君回家
- 商品清单计算总和(购物车)
- 从数据库读取数据,该数据作为参数传入万得的wsd命令中
- 【云服务器 ECS 实战】ECS 快照镜像的原理及用法详解
- Linux下vim的复制、粘贴操作
热门文章
- chkconfig命令会立即生效吗_chkconfig 命令用法
- Android 自定义 View:左右两边显示 text 的 TextView(RightAndLeftTextView)
- ioctl_cfg80211.c:9477:18: error: ‘WIPHY_FLAG_SUPPORTS_SCHED_SCAN’ undeclared
- 弘辽科技:淘宝新品标怎么获取?哪些情况不可打新品标?
- Persistence Context
- 区域中找不到无线网络解决办法
- 微信南通大学教务学生管理系统_用户体验
- 央行就《非银行支付机构网络支付业务管理办法(征求意见稿)》有关问题答记者问...
- stm32c8t6利用语音识别与播报检测DHT11温湿度
- TRC丨艾美捷 3-羟基己二酸说明书