1 import re
 2
 3 express = '1 - 2 * ( ( 6 0 -3 0  +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
 4 # 去掉所有的空格
 5 # 找括号,先找括号里面没有括号的最里面的括号
 6 # 先算括号里的乘除,再算括号里的加减
 7
 8 # 计算表达式
 9 def dealwith(express):
10     if    "+-" in express:express.replace("+-","-")
11     if    "+-" in express:express.replace("--","+")
12     return express
13
14 def cal_exp_son(exp_son):
15     # 只用来计算原子型表达式,最小的表达式
16     if    "/" in exp_son:
17         a,b = exp_son.split("/")
18         return str(float(a)/float(b))
19     if    "*" in exp_son:
20         a,b = exp_son.split("*")
21         return str(float(a) * float(b))
22
23 def cal_express_no_bracket(exp):
24     # 计算没有括号的表达式
25     # exp 为未经过处理的最内层的带括号的表达式
26     exp = exp.strip("()")
27     print(exp)
28     # 先乘除,后加减
29     while True:
30         ret = re.search("\d+\.?\d*[*/]-?\d+\.?\d*",exp)
31         if    ret :
32             exp_son = ret.group()
33             ret = cal_exp_son(exp_son)
34             exp = exp.replace(exp_son,ret)
35
36 # 将空格去除
37 new_express = re.sub(" ","",express)
38
39 #提取括号里面没有其他括号的的表达式
40 while True:
41     ret = re.search("\([^()]+\)",new_express)
42     if    ret :
43         express_no_bracket = ret.group()
44         ret = cal_express_no_bracket(express_no_bracket)
45         new_express= new_express.replace(express_no_bracket,ret)
46         print(new_express)
47         new_express = dealwith(new_express)
48         print(new_express)
49     else:
50         print("表达式已经没有括号了",new_express)
51         break


转载于:https://www.cnblogs.com/shijieli/p/9714600.html

day21 计算器作业相关推荐

  1. 存款利息python题_Python——GUI编程 利息计算器 作业9(python programming)

    importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...

  2. pythongui做计算器_Python——GUI编程 利息计算器 作业9(python programming)

    importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...

  3. python计算利息程序_Python——GUI编程 利息计算器 作业9(python programming)-Go语言中文社区...

    importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...

  4. 定期存款利息计算器(作业)

    一.问题及代码 /* *文件名称:定期存款利息计算器 *作 者:武鹏翔 *完成日期:2017.3.13 *版 本 号:v6.0 *对任务及求解方法描述部分: *输入描述: *问题描述: *程序输出: ...

  5. 《面向对象程序设计》课程作业二

    github链接 作业链接 编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来.--建立一个工程,将程序写成两个.cpp和一个.h的形式. 这个问题倒是没什么难的,但对于同学们来说 ...

  6. python自动化ppt_老男孩Python自动化开发12期完整精华版(含作业代码课件)

    [课程内容] 第1章: 开课介绍 同学互相介绍 Python简史介绍 python3的新特性 开发工具ide介绍 helloworld程序 变量与赋值 用户交互 条件判断与缩进 循环控制 循环次数限制 ...

  7. 《面向对象程序设计》2018年春学期寒假及博客作业总结

    在过了半个月后写这篇总结,有点时过境迁的感觉,开头写了好几遍,都找不到感觉,但又觉得有些要点很有必要记录下来,以便以后改进.因此,只能简略言说,无法传情达意. 一.关于寒假作业1.寒假作业有必要继续保 ...

  8. 【Java PTA作业】当老师一口气布置八个作业( 8 / 8 )

    目录 作业一:基本数据类型与表达式 一.判断题 二.单选题 作业二:程序控制结构 一.单选题 二.程序填空题 三.编程题 7-3 sdut-循环-5-百钱买百鸡 作业三:类与对象 一.单选题 二.编程 ...

  9. Java计算器简易代码

    B站狂神计算器作业 我写的计算器 package com.chen.method;import java.util.Scanner; //简易计算器 public class Demo7 {publi ...

最新文章

  1. 最长公共子序列Java代码实现
  2. sap 里的用户菜单是灰色的,不可用的解决方法
  3. boost::units::absolute相关的测试程序
  4. SQL Server 2005参考:Apply运算符
  5. 世界500强牛企英语面试精彩问答
  6. Integer的常用方法和String类型的常用方法
  7. 威海二职工业机器人专业_谋思路 建平台 促房山职教专业发展 ——与北京工业职业技术学院专业对接洽谈会在房山二职举行...
  8. java64位1.8.0下载_jdk1.8下载 64位
  9. 挑战程序设计竞赛(第二章:2.1 搜索)
  10. Docker | 基于docker启动jar包,并进行更新
  11. 制作透明背景的微信头像
  12. word中脚注和尾注的处理
  13. 疾病地图制作_助力旅游业复工复产,这份山西中医文旅地图请收好,就在你家门口...
  14. Android自动化测试应用:uiautomatorviewer工具的安装与使用
  15. 点击word页面自动弹出信息检索
  16. 云测试软件详解,云计算存储测试:FIO工具入门与实战
  17. Eclipse版本号及各个版本区别
  18. Windows下编译LibreCAD
  19. 2022-08-26 JQuery(二)
  20. IDEA 出现问题:IDEA Shift+shift 万能搜索你也有失效的时候

热门文章

  1. android 数据存储怎么保存图片_遇到验证码怎么办?Python编写一个验证码图片数据标注GUI程序!...
  2. 场效应与三极管 电路标识符_看懂这6个提示,轻松搞定恒流源电源电路设计!...
  3. com.facebook.imagepipeline.bitmaps.TooManyBitmapsException Fresco使用过程中遇到的坑
  4. 面试中Spring常见问题
  5. linux和java_java内存和linux关系
  6. ajax 更新模型数据_PyTorch视觉工具包torchvision重大更新!支持各种检测模型、分割模型,还有许多数据集...
  7. containerd和docker技术的比较
  8. Linux系统卡慢之调优方法
  9. java实现两个最大整数相加_JAVA-实现两个超大整数相加
  10. Linux服务器下安装配置Nginx的教程