1 #!usr/bin/evn python

2 #coding:cp936

3 #Author:Siwen

4

5

6 print ("Hello world!")7

8

9 importre10

11 defhandle_special_occactions(plus_minus,multiply_and_dividend):12 #有时会出现这种情况 , ['-', '-'] ['1 ', ' 2 * ', '14969036.7968254'],2*...后面这段实际是 2*-14969036.7968254,需要特别处理下,太恶心了'''

13 for index,i inenumerate(multiply_and_dividend):14 i =i.strip()15 if i.endswith("*") or i.endswith("/"):16 multiply_and_dividend[index] = multiply_and_dividend[index] + plus_minus[index] + multiply_and_dividend[index+1]17 del multiply_and_dividend[index+1]18 delplus_minus[index]19 returnplus_minus,multiply_and_dividend20

21 defremove_jia(formula):22 formula = formula.replace("++","+")23 formula = formula.replace("+-","-")24 formula = formula.replace("-+","-")25 formula = formula.replace("--","+")26 formula = formula.replace("- -","+")27 returnformula28

29

30 defcompute_mutiply_and_dividend(formula):31 operators = re.findall("[*/]", formula )32 calc_list = re.split("[*/]", formula )33 t_res =None34 for index,item inenumerate(calc_list):35 item=item.strip()36 if t_res: #代表不是第一次循环

37 if operators[index-1] == '/':38 t_res /=float(item)39 if operators[index-1] == '*':40 t_res *=float(item)41 else:42 t_res =float(item)43 print("乘除结果为:",t_res)44 return(t_res)45

46 defcompute(formula):47 #计算不带括号的算式

48 formula=formula.strip('()')49 formula=remove_jia(formula)50 plus_minus=re.findall(r'[+-]',formula)51 multiply_and_dividend = re.split("[+-]", formula)#去除乘除的公式

52 if len(multiply_and_dividend[0].strip()) == 0:#代表这肯定是个负号

53 multiply_and_dividend[1] = plus_minus[0] + multiply_and_dividend[1]54 delmultiply_and_dividend[0]55 delplus_minus[0]56

57 plus_minus,multiply_and_dividend=handle_special_occactions(plus_minus,multiply_and_dividend)58

59 for index,i inenumerate(multiply_and_dividend):60 if re.search("[*/]",i):61 sub_res =compute_mutiply_and_dividend(i)62 multiply_and_dividend[index] =sub_res63

64 print(multiply_and_dividend, plus_minus)65 total_res =None66 for index,item inenumerate(multiply_and_dividend):67

68 if total_res: #代表不是第一次循环

69

70 if plus_minus[index-1] == '+':71 total_res +=float(item)72 if plus_minus[index-1] == '-':73 total_res -=float(item)74

75 else:76 total_res =float(item)77 print('算式%s计算结果为:'%formula,total_res)78 return(total_res)79

80

81

82 defcale(formula):83 #主要逻辑,先算括号里的值,再算乘除,再算加减

84 parenthesise_flag=True85 sub=None86 sub_res=087 whileparenthesise_flag:88 m=re.search('\([^()]*\)',formula)89

90 ifm:91 m=m.group()92 print(m)93 #print('先算括号里',m)

94 sub_res=compute(m)95 print(sub_res)96 formula=formula.replace(m,str(sub_res))97 else:98 print('没有括号了')99 #formula=formula.replace(m.group(),str(sub_res))

100 print(formula)101 sub=compute(formula)102 #print '计算结果为:',sub

103 parenthesise_flag=False#算式中的括号都已经被剥除了

104 res="1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"

105 #res='1+2*(3+4)'

106 res=cale(res)107

108

python 设计简易计算器_python小项目——实现简易的计算器相关推荐

  1. python计算银行余额_Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

  2. python编程工时计算_Python小项目——工时计算

    项目二:工作量计算器 要求 要求 分析过程 已知信息:标准的项目,需要1个人用80工时完成(1个人做10天) 计算方式1:工时计算 输入:项目大小(浮点型,代表标准大小的倍数).人数(整数) 输出:工 ...

  3. python商品会员打折_Python微项目分享之双十一优惠计算器

    作者:JiawuZhang 出品:JiawuLab(ID:jiawulab)微项目系列是JiawuLab原创栏目,每期选取一个自创项目或发现有趣的项目,进行代码.逻辑分析,达到python学习目的. ...

  4. android计算器开源小项目代码(附安装包.apk)

    最近在学习安卓开发,做了个小计算器作为实践.发现网上的计算器教程代码的健壮性不够好,只能够容忍正确的输入.于是我花了几天时间写了个完整的程序.可能是我水平有限,其中条件控制逻辑设计的比较复杂,但我受开 ...

  5. django不修改数据库创外键_python小项目使用django的数据库模型

    有时开发一个小项目并不想启动服务,只是在本地运行,但是又有一些数据存储的需求,打算使用数据库.如果直接采用数据库sql语句接口进行操作显得非常麻烦,而且容易出错.现在比较主流的web框架django的 ...

  6. python switch_从邮箱验证小项目说python字符串判断与if判断那些事儿

    好了,接下来依旧是我不务正业的蹭课做的小项目.string.find这个函数真的好用啊!另外python没有switch结构真的难受.... IPO分析 代码 ad 首先要注意的是string.fin ...

  7. python数据获取及预处理_Python小练习——电影数据集TMDB预处理

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: IvanFX 复兴计算机社团 转载地址 https://blog. ...

  8. 用python设计一个简单的计算器_Python之实现一个简易计算器 用re

    1 #-*- coding:utf-8 -*- 2 importre3 4 ###############################################清洗,格式化字符串###### ...

  9. python tkinter计算器实例_python小实例——tkinter实战(计算器)

    1 importtkinter2 importmath3 importtkinter.messagebox4 5 classcalculator:6 #界面布局方法 7 def __init__(se ...

最新文章

  1. 导入Flex/Flash项目后的一个简单错误:无法创建 HTML 包装器
  2. 使用CInternetSession获取utf-8页面中文乱码问题解决方法
  3. arm linux gnueabi编译,交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
  4. C/C++中退出线程的四种解决方法
  5. python中如何定义颜色_Python图像处理之颜色的定义与使用分析
  6. linux 杀死脚本,linux – 如何在Bash脚本被杀死时杀死当前命令
  7. UIWindow的windowLevel详解
  8. Spring MVC异常处理 - @ ControllerAdvice,@ ExceptionHandler,HandlerExceptionResolver
  9. 【C语言】创建一个函数,将输入的2个数排序
  10. 算法工程师面试备战笔记12_决策树
  11. Bailian3703 寻找平面上的极大点【最值】
  12. wince6.0升级7.0系统_一个WINCC项目升级的案例分享
  13. php 小写数字转大写,php 小写数字怎么转大写
  14. 华为CE交换机下载文件FTP步骤
  15. bochs运行xp_bochs安卓最新版下载
  16. vue中pdf预览组件_基于vue的pdf预览组件
  17. win7系统使用高版本node.js
  18. elasticsearch 从 _source 与 stored_fields 获取数据不一致?
  19. Moles(笛卡尔树 Z Algorithm)
  20. 【经典面试题】小程序与H5、APP、公众号的区别到底是什么?

热门文章

  1. R语言数据挖掘实战系列(4)
  2. 如何不显示地图就获取位置数据?
  3. JavaScript权威指南 - 数组
  4. 基于Jenkins 快速搭建持续集成环境
  5. 使用Axis,在webservice的服务器端如何取到客户端的IP地址
  6. extern “C“那些事
  7. stm32 工业按键检测_STM32单片机按键消抖和FPGA按键消抖大全
  8. mysql 库名大小写_MySQL 库名、表名、字段名区分大小写吗???
  9. java 关闭中断_Raspberry pi使用中断方法关闭(关闭时出现垃圾代码)
  10. winsock编程:关于因为头文件而报错的问题