详解:

1.str.split(分隔符):将str按分隔符进行切片,最后形成的是列表类型

eg:

str = "Line1-abcdef \nLine2-abc \nLine4-abcd";

print str.split( );

print str.split(' ', 1 );

>>['Line1-abcdef', 'Line2-abc', 'Line4-abcd']

>>['Line1-abcdef', '\nLine2-abc \nLine4-abcd']

2.str.join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。

语法: 'sep'.join(seq)

参数说明

sep:分隔符。可以为空

seq:要连接的元素序列、字符串、元组、字典

上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

3.sub():按指定的字符进行替换。

Sub(replacement,string[,count =0 ])

1)返回的字符串是在字符串中用RE最左边不重复的匹配来替换。如果模式没有被发现,字符将没有被改变的返回。

2)可选参数count是模式匹配后替换的最大次数;count必须是非负整数。缺省值是0表示替换所有的匹配。

4.grop():获取分段截获的字符串.

需求:

实现加减乘除及拓号优先级解析

用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式。

#coding:utf-8

import re

def main():

a = ''.join(raw_input('请输入需要计算的算式').split())

while True:

if '(' in a:

ct = re.search(r'\(([^()]+)\)', a)

if ct is not None:

b = ct.groups()[0]

c = count(b)

a = re.sub(r'\(([^()]+)\)', str(c), a, 1)

else:

c = count(a)

print(c)

break

def add_min(a):

'''

计算加减法

:param:

:return:

'''

if '--' in a:

a = a.replace('--', '+')

c = re.findall(r'-?\d+\.?\d*', a)

ls = []

for i in c:

ls.append(float(i))

rest = sum(ls)

return rest

def mul(a):

'''

计算剩数

:param ct:

:return:

'''

b = re.search(r'\d+\.?\d*(\*-?\d+\.?\d*)+', a)

if b is not None:

b = b.group()

rest = 1

c = re.findall(r'-?\d+\.?\d*', b)

ls =[]

for item in c:

ls.append(float(item))

for i1 in range(len(ls)):

rest = rest * ls[i1]

a = re.sub(r'\d+\.?\d*(\*-?\d+\.?\d*)+', str(rest), a, 1)

return a

def div(a):

'''

计算出发

:param a:

:return:

'''

b = re.search(r'\d+\.?\d*(\/-?\d+\.?\d*)+', a)

if b is not None:

b = b.group()

c = re.findall(r'\d+\.?\d*', b)

#print c

ls =[]

for i in c:

ls.append(float(i))

rest = ls[0]

for i1 in range(1,len(ls)):

rest = rest / ls[i1]

a = re.sub(r'\d+\.?\d*(\/-?\d+\.?\d*)+', str(rest), a, 1)

return a

def count(b):

'''

计算结果

:return:

'''

while True:

if '*' in b:

c = b.split('*')

if '/' in c[0]:

b = div(b)

else:

b = mul(b)

elif '/' in b:

b = div(b)

elif '+' or '-' in b:

b = add_min(b)

return b

else:

return b

main()

python类计算器开发_开发一个简单的python计算器相关推荐

  1. python做的简单gui计算器_Python计算器–使用Tkinter创建一个简单的GUI计算器

    在Python计算器教程中,您将学习创建简单的GUI计算器.在这篇文章中,我将向您展示如何使用python中的tkinter模块开发一个简单的计算器.因此,让我们进一步创建一个简单的python计算器 ...

  2. python框架实例,从零构建一个简单的 Python 框架

    为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...

  3. 编写python程序 兀 3_帮忙写一个简单的python程序π_π 要求就是图上的那样 其实挺简单的但我就是写不出来。拜托了,...

    展开全部 要求提的不是很明确,按照最简单的功能来做了. 只记录姓名和电话号码62616964757a686964616fe78988e69d8331333337626138,没有做号码检验.也没有做保 ...

  4. python自动生成坐标脚本_用一个简单的python脚本从经纬度坐标获得高程

    我从这个question得到了一个python脚本,它将从USGS高程点查询服务中提取.但是,它总是超时,并在一段看似随机的时间之后,在查询完成之前将我踢出.我需要另一种方法来获取给定纬度坐标的高程数 ...

  5. python简单菜单_创建一个简单的python菜单

    修正和评论,它们主要是语法错误.menulist= '''1. Print the list, 2. Add a name to the list, 3. Remove a name from the ...

  6. python3写一个计算器_Python3 写了一个简单的模拟计算器 总是报错 有知道的大神 帮忙解答下 非常感谢...

    先上代码复制粘贴就可以运行了```#_*_coding:utf-8_*_importsysdefadd():returnnum1+num2defsubtract():returnnum1-num2de ...

  7. python可以用来写什么_对于一个OIer,Python能干些什么?

    Part 0 写在前面 Python是一门比较新的编程语言,火的相当迅速. 这一篇文章会比较全面的告诉你:OIer可以用Python来干嘛? 如有不足,请指出. 更好地阅读体验 Part 1 用来出数 ...

  8. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  9. Windows10 手机应用程序开发 - 3. 做一个简单的计算器界面

    2019独角兽企业重金招聘Python工程师标准>>> 目标:完成一个简单的计算器的界面,暂时不做点击处理,主要联系UI布局. 步骤: 1.创建一个空的windows phone 项 ...

  10. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

最新文章

  1. 13.组合查询--SQL
  2. 邓力、何晓冬深度解读:多模态智能未来的研究热点
  3. android 反编译apktool工具
  4. 真正能解决 Windows 7下安装Office 2007—2010出现1402和1406类错误的方法
  5. 重庆大学光电工程学院 贾旭滨 对 “句柄” “指针” 有下面的描述(AfxGetMainWnd GetSafeHwnd() AfxGetAppName() AfxGetThread)...
  6. Linux Kernel Makefile Test
  7. iPhone5帮助了谁?
  8. OpenGL整体概念
  9. c++ string substr_用std::string_view替换leveldb的Slice
  10. 回到顶部 jquery
  11. [转] Linux应用层的定时器Timer
  12. 《Oracle 11g数据库基础教程(第2版)》读者勘误
  13. 【5步解决】打开Word 2016时出现MathType has detected an error in AutoExecCls.Main 以及 文件未找到:MathPage.WILL.亲测完美方案
  14. 目标检测中的边界框(x,y,w,h形式转换与绘制)
  15. 检验两个随机序列的beta系数
  16. rust相框加载图片代码_vue图片加载与显示默认图片实例代码
  17. 4个方法判断食物的热量高低
  18. LCD显示屏和OLED显示屏的区别
  19. 基于Web服务的物联网-WoT(Web of Things)
  20. Android默认时区大全

热门文章

  1. 巨控GRM110无线通信模块
  2. android 11.0 12.0app安装黑名单(限制app安装)
  3. POJ3067 Japan
  4. 摄像头更改“友好名称“方法
  5. 寒武纪cnstream模型加速的python环境搭建笔记
  6. 【读书】格鲁夫给经理人的第一课-工作成熟度
  7. firebox插件制作
  8. ESP32入门-NVS的flash读写测试
  9. 彩旗飘飘 彩灯烁烁的桥
  10. 钟站壤赴梅拱厩沼泊叶