Python练习-天已经亮了计算器也终于完成了
# 编辑者:闫龙
import re #导入re模块(正则表达式)
calc2 = "1-2*((60-30+(-40/52)*(9-2*5/3+7/3*-99/4*2998+10*568/14))-(-4*3)/(16-3*2))"
calc1 = "1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))"
calc = "1-2*((60*30+(-40/5)*(9*2*5/3+7/3*99/4*2998+10*568/14))-(-4*32)/(16-3*2))"
def Format(Str):
"格式化运算式"
Str = Str.replace("+-","-")
Str = Str.replace("-+", "-")
Str = Str.replace("++", "+")
Str = Str.replace("--", "+")
return Str
def SumCut(Str):
while re.search("-?[0-9]+\.?[0-9]*[-+][0-9]+\.?[0-9]*",Str):
newRes= re.search("-?[0-9]+\.?[0-9]*[-+][0-9]+\.?[0-9]*",Str)
WhatIs = newRes.group()
if(WhatIs.find("-") > 0):
l = WhatIs.split("-")
Str = Str.replace(WhatIs,str(float(l[0])-float(l[1])))
elif(WhatIs.find("+") > 0):
l = WhatIs.split("+")
Str = Str.replace(WhatIs,str(float(l[0])+float(l[1])))
return Str.replace("(","").replace(")","")
def MulDiv(Str):
while re.search("-?[0-9]+\.?[0-9]*[/*].?[0-9]+\.?[0-9]*",Str):
newRes= re.search("-?[0-9]+\.?[0-9]*[/*].?[0-9]+\.?[0-9]*",Str)
WhatIs = newRes.group()
if(WhatIs.find("/") > 0):
l = WhatIs.split("/")
Str = Str.replace(WhatIs,str(float(l[0])/float(l[1])))
elif(WhatIs.find("*") > 0):
l = WhatIs.split("*")
if(float(l[0])<0 and float(l[1])<0):
Str = Str.replace(WhatIs, "+"+str(float(l[0]) * float(l[1])))
else:
Str = Str.replace(WhatIs,str(float(l[0])*float(l[1])))
return Format(Str)
while re.search("\([^()]+\)",calc):
res = re.search("\([^()]+\)", calc)
resTwo = MulDiv(Format(res.group()))
resTwo = SumCut(resTwo)
calc = calc.replace(res.group(),resTwo)
else:
resTwo = MulDiv(calc)
resTwo = SumCut(resTwo)
calc = resTwo
print(calc)
以上,我什么也不想说,睡觉!
Python练习-天已经亮了计算器也终于完成了的更多相关文章
- python预科前三天:计算器知识、Python下载和安装、Pycharm下载安装激活设置、解释型和编译型、git、思维导图、显示隐藏文件、隐藏已知文件扩展名、创建组织、创建项目、提交作业、排BUG技巧
1.计算机组成结构:CPU.硬盘.内存.输入输出设备.主板.电源. 2.硬件之间的协作关系:是CPU运算完后给操作系统.专业术语叫指令. 3.键盘输入a之后发生的事情:键盘-CPU-操作系统-显卡-显 ...
- VS Code Python 全新发布!Jupyter Notebook 原生支持终于来了!
VS Code Python 全新发布!Jupyter Notebook 原生支持终于来了! 北京时间 2019 年 10 月 9 日,微软发布了全新的 VS Code Python 插件,带来了众多 ...
- Python 第五天 递归,计算器(2)
利用函数编写如下数列: 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584, ...
- Python开发【程序】:计算器
开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...
- Python: Tkinter、ttk编程之计算器
起源: 研究Python UI编程,我偏喜欢其原生组件,于是学习Tkinter.ttk组件用法.找一计算器开源代码,略加修整,以为备忘.其界面如图所示: 1.源代码(Python 2.7): # en ...
- 用python的正则表达式实现简单的计算器功能
#!/usr/bin/env python # -*- coding:utf-8 -*- import sys import re def welcome_func(): ""&q ...
- 【Python 17】B分R计算器1.0(数值类型)
1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...
- python小实例——tkinter实战(计算器)
一.完美计算器实验一 import tkinter import math import tkinter.messagebox class calculator: #界面布局方法 def __init ...
- Python体验(10)-图形界面之计算器
import wx class Form(wx.Frame): def __init__( self, parent, id, title ): wx.Frame.__init__(self,pare ...
随机推荐
- ERROR 1698 (28000): Access denied for user 'root'@'localhost' 解决方法
之前MySQL服务端本机上使用密码登陆root账号是没有问题的,但是今天不知道是因为动了哪里,登陆失败并有这个错误代码: ~$ mysql -u root -p Enter password: ERR ...
- 关于 Source Engine 2007 网络通信的分析
最近在写自己的游戏引擎,主要是参考Quake和GoldSrc和SourceEngine2007,其中SourceEngine2007代码比较新一些. 对比了这几个引擎的代码,前两者代码比较简单,基于C ...
- BZOJ3277 串(后缀数组+二分答案+主席树)
因为不会SAM,考虑SA.将所有串连起来并加分隔符,每次考虑计算以某个位置开始的子串有多少个合法. 对此首先二分答案,找到名次数组上的一个区间,那么只需要统计有多少个所给串在该区间内出现就可以了.这是 ...
- uoj35 后缀排序
题目链接:http://uoj.ac/problem/35 这是一道模板题. 读入一个长度为 n 的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第 ...
- BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】
题目链接 BZOJ2437 题解 和JSOI2014很像 只不过这题动态删点 如果我们把空位置看做\(X\)的话,就会发现我们走的路径是一个\(OX\)交错的路径 然后将图二分染色,当前点必胜,当且仅 ...
- 洛谷 P4363 [九省联考2018]一双木棋chess 解题报告
P4363 [九省联考2018]一双木棋chess 题目描述 菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落 ...
- 解题:POI 2009 Ticket Inspector
题面 看起来很水,然而不会DP的蒟蒻并不会做,PoPoqqq orz 设$f[i][j]$表示当前在第$i$个点和第$i+1$个点之间查票,已经查了$j$次的最大收益.然后就是那种很常见的枚举前一个结 ...
- Backbone前端开发流程及规范
定好View 首先,根据页面切分View,切分View的规则是将重复利用的视图或者功能相近的视图归于一个View,对于Backbone,每一个model都要对应一个View.父层View负责布局,并将 ...
- Razor:从aspx到cshtml常见错误及正确书写方法
http://blog.csdn.net/cheny_com/article/details/6298496 从aspx转到chshtml还是有很多要适应的地方的,本帖是个人学习笔记帖不断更新.每天开 ...
- ab输出信息解释以及Failed requests原因分析
ab是apache自带的压力测试工具.ab进行的一切测试本质上是基于HTTP的.下面是对ab输出项信息的解释和出现Failed requests原因分析.测试实例:1. ab输出信息说明: 1 2 ...