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 ...
随机推荐
- ng-include 上ng-controller 无法获取控件
A.Html内容如下 <div> <div kendo-grid="testGrid" k-options="testOptions"> ...
- 【模板】网络流-最大流模板(Dinic)
#include <cstdio> #include <cstring> #include <algorithm> #include <queue> u ...
- BZOJ 1036 树的统计 | 树链剖分模板题
又做了一遍--去掉读入优化只有八十行~ #include <cstdio> #include <cstring> #include <algorithm> usin ...
- 【NOI2016】区间
目链接:http://uoj.ac/problem/222 在数轴上有 n 个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m 个区间共同包含至少 ...
- Linux进程间通信(消息队列/信号量+共享内存)
写在前面 不得不说,Deadline果真是第一生产力.不过做出来的东西真的是不堪入目,于是又花了一早上重写代码. 实验内容 进程通信的邮箱方式由操作系统提供形如 send()和 receive()的系 ...
- SHA1WithRSA签名 规范化标准签名
#region CerRsaSignature 根据私钥签名 /// <summary> /// 根据私钥串签名 /// </summary> /// <param na ...
- 【poj3420】 Quad Tiling
http://poj.org/problem?id=3420 (题目链接) 题意 给出$n*m$的网格,用$1*2$的方块覆盖有多少种方案. Solution 数据很大,不能直接搞了,我们矩乘一下.0 ...
- bzoj 3170 Tjoi 2013 松鼠聚会 曼哈顿距离&&切比雪夫距离
因为曼哈顿距离很好求,所以要把每个点的坐标转换一下. 转自:http://blog.csdn.net/slongle_amazing/article/details/50911504 题解 两个点的切 ...
- 《剑指offer》— JavaScript(24)二叉树中和为某一值的路径
二叉树中和为某一值的路径 题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路 前序遍历二叉树, ...
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...