简单计算器的实现:

计算:1-2*((60-30+(-40.0/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'

#!usr/bin/env python
# encoding: utf-
import re #乘除运算
def chengchu(formula):
while True:
s_formula = re.search('\d+\.?\d*[*/][-]?\d+\.?\d*',formula)
if s_formula:
s_formula_list = re.split('[*/]',s_formula.group())
if '*' in s_formula.group():
s_sub = float(s_formula_list[]) * float(s_formula_list[])
formula = formula.replace(s_formula.group(),str(s_sub))
elif '/' in s_formula.group():
s_sub = float(s_formula_list[]) / float(s_formula_list[])
formula = formula.replace(s_formula.group(),str(s_sub))
else:
print(s_formula_list,formula)
res = jiajian(formula)
return res #加减运算
def jiajian(formula2):
if '+-' in formula2 or '++' in formula2 or '-+' in formula2 or '--' in formula2:
formula2 = formula2.replace('+-', '-')
formula2 = formula2.replace('++', '+')
formula2 = formula2.replace('-+', '-')
formula2 = formula2.replace('--', '+')
while True:
s_f = re.search('\d+\.?\d*[+-]\d+\.?\d*',formula2)
if s_f:
s_f_list = re.split('[+-]',s_f.group())
print(s_f_list)
if '-' in s_f.group():
s_f_sub = float(s_f_list[]) - float(s_f_list[])
formula2 = formula2.replace(s_f.group(),str(s_f_sub))
elif '+'in s_f.group():
s_f_sub = float(s_f_list[]) + float(s_f_list[])
formula2 = formula2.replace(s_f.group(), str(s_f_sub))
continue
else:
print(formula2)
return formula2 #开始运算
def calc(arg):
while True:
m = re.search("\([^()]+\)",arg)
if m:
formula = m.group().strip('()')
print(formula)
m_result = chengchu(formula)
arg = arg.replace(m.group(),str(m_result))
continue
else:
print(arg)
su = chengchu(arg)
print(su)
break if __name__ == "__main__":
a = '1-2*((60-30+(-40.0/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'
# a = '1-2*-1388338.2476190478'
calc(a)

python 练习3的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. CI/CD

    CI/CD 啥是CI/CD CI: continuous integration, 持续集成.就是频繁地把开发的工作提交到主线代码.主要是为了解决集成问题.什么是集成问题呢,白话说,就是从你本地的代码 ...

  2. linux查看tomcat启动运行日志

    1.先切换到:cd tomcat/logs 2.tail -f catalina.out 3.这样运行时就可以实时查看运行日志了

  3. 4Linux环境变量、Vim、Shell脚本

    环境变量 命令在Linux中的执行分为4个步骤: 1.以路径的形式来执行 2.命令的别名形式来执行,alias 新命令=“原始命令”,新命令与原始命令互不冲突,可以同时使用,重启失效,修改/etc/p ...

  4. HTML: Dom event

    转自:https://developer.mozilla.org/zh-CN/docs/Web/API/Event Event接口表示在DOM中发生的任何事件; 一些是用户生成的(例如鼠标或键盘事件) ...

  5. mac 环境搭建

    安装homebrew jdk 也可以官网下载 maven 官网下载tar.gz包 也在homebrew下安装git,java,mysql.

  6. jquery中的 jquery.contains(a,b)

    jquery.contains(a,b) 判断元素 a中是否包含 b 元素: 源码: contains = isNative(docElem.contains) || docElem.compareD ...

  7. linux dd 本地挂载

    losetup /dev/loop0 /root/test.img mkfs.ext4 /dev/loop0 mount /dev/loop0 /data

  8. 小组团队项目的NABCD分析

    N:1.学校中有很多学生是外省的,然后不知道附近有什么地方周末可以去玩,有时候想记录自己每天发生的乐趣事情并且想跟别人分享.2.学校中学生有很多用不到的东西但是联系不到合适的买家.A:我们可以做一个软 ...

  9. servlet的继承关系

    一.servlet的继承关系 1.servlet程序是sun公司开发用于web资源技术,任何一个类只需要实现了servlet接口,那么就可以成为servlet程序 2.继承体系: ---------- ...

  10. spring cloud Ribbon

    参考:https://www.jianshu.com/p/1bd66db5dc46 Ribbon 是什么 spring cloud ribbon 是一个基于HTTP 和 TCP 的客户端负载均衡工具, ...