Python带括号的计算器
带括号的计算器也是第一个自我感觉完成最好的 毕竟真的弄了一个多星期 虽然前期这路真的很难走 我会努力加油 将Python学好学踏实
参考了两位博主的文章
http://www.cnblogs.com/0zcl/p/5983236.html
http://www.cnblogs.com/loyfee/p/5764926.html#3538071
大致过程就是 先将输入的数据转为列表 当中去除空字符
接着找出最里层括号 进行运算 再将结果放回列表 最后算出结果
import re
#data = input("请输入算术:") def change_list(data):
data =re.sub(" ","",data)#将空格转为""
# print(data)
data_list = []
for i in data:
data_list.append(i)
num =
try:
while :
if data_list[] == "-":
data_list[] = data_list[] + data_list[]
data_list.pop()
if data_list[num].isnumeric():
if data_list[num+].isnumeric():
data_list[num] = data_list[num]+data_list[num+]
data_list.pop(num+)
else:
num +=
else:
num +=
except IndexError as e:
#print(e,"索引越界")
return data_list
# if data_list.index(data_list[-]) <num:
# print(data_list)
# break def compute(data):
while :
#判断乘除
if "*" in data or "/" in data:
for i,j in enumerate(data):
if j == "*":
data[i+] =int(data[i-]) * int(data[i+])
data.pop(i-)
data.pop(i-)
break
if j == "/":
data[i+] =int(data[i-]) * int(data[i+])
data.pop(i-)
data.pop(i-)
break
#判断加减
if "+" in data or "-" in data:
for i,j in enumerate(data):
if j == "+":
data[i + ] = int(data[i - ]) + int(data[i + ])
data.pop(i - )
data.pop(i - )
break
if j == "-":
data[i + ] = int(data[i - ]) - int(data[i + ])
data.pop(i - )
data.pop(i - )
break
else:
return data
break #有括号和无括号运算
"""
如果有括号 则会以最里层的“)”去找到与其第一个“(” 用:截取中间的数字进行运算,接着传回列表
直到没有括号时跳出 进行运算
"""
def parenth(data):
if "(" in data:
while :
if ")" in data:
b = data.index(")")#表示第一个“)”的索引位置
#print(b)
for i in range(b,-,-): #截取最里层括号进行运算
#print(i) if data[i] == "(":
new_list = []
new_list=data[i+:b]
byte=compute(new_list)[]
del(data[i:b+])
data.insert(i,byte)
break
else:
return compute(data) else:
compute(data)
while :
data = input("请输入计算:")
if data == "":continue
data = change_list(data)
parenth(data)
print(data[])
if input("如果输入q则退出:\n") == "q":
exit()
Python带括号的计算器的更多相关文章
- python函数带不带括号的问题
Python带括号返回的是该函数的返回值 不带括号返回的是该函数的位置信息等
- 使用python开发一个能够计算带括号的复杂表达式的计算器(只支持加减乘除)
使用到了模块re,正则,字典等 # 实现简单的加减乘除括号等运算 # Calculator def calculator(expression): print(expression) import r ...
- Python中类-带括号与不带括号的区别
类不带括号我们叫赋值,带括号我们叫实例化. 什么是赋值? a=7 b=a id(7) 140726814208448 id(a) 140726814208448 id(b) 1407268142084 ...
- Python调用函数带括号和不带括号的区别
1.不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成 2.带括号(此时必须传入需要的参数),调用的是函数的return结果,需要等待函数执行完成的结果 如果函数本 ...
- python装饰器带括号和不带括号的语法和用法
装饰器的写法补充: 通常装饰器的写法是@func(),而有的时候为了减少出错率,可能会写成@func,没有()括号,这时我们可以这样定义,来减少括号.下面通过两个例子还看. 一般装饰器的写法: def ...
- Python笔记:调用函数,带扩号和和不带括号的区别
调用函数,如果带括号,那么是调用函数运行后的结果, 调用函数不带括号,调用的是函数本身 例如: def cun (a,b): return a+b print(cun) : 调用函数,打印的是函数 p ...
- 教学项目之-通过Python实现简单的计算器
教学项目之-通过Python实现简单的计算器 计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...
- python实现简单的计算器功能
如想实现一个计算器的功能,输入格式为字符串,不能运用python里面的内置方法,出去简单的加减乘除,设计一个相对高级的计算器: a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * ...
- python正则实现简单计算器
利用正则实现计算器 利用正则来实现简单计算器的功能,能够设计计算带括号的加减乘除运算.当然不使用eval等语句. 利用递归: import re from functools import reduc ...
随机推荐
- Centos6.6 系统优化
1:最小化安装 2:修改网卡 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0HWADDR=52:54:00:0e:c2:c3TYPE ...
- 【图灵杯 A】谷神的赌博游戏
[题目链接]:http://oj.acmclub.cn/problem.php?cid=1164&pid=0 [题意] [题解] 把每个数字都%3处理; 会发现最后1的个数为n+1 2和0的个 ...
- 如何查询mysql中是否表被锁
可直接在mysql命令行执行:show engine innodb status\G;(只能通过cmd或者shell登录mysql) 查看造成死锁的sql语句,分析索引情况,然后优化sql然后show ...
- 洛谷 P1572 计算分数
P1572 计算分数 题目描述 Csh被老妈关在家里做分数计算题,但显然他不愿意坐这么多复杂的计算.况且在家门口还有Xxq在等着他去一起看电影.为了尽快地能去陪Xxq看电影,他把剩下的计算题交给了你, ...
- HTML5 canvas炫酷棱镜效果的幻灯片特效
这是一款效果很炫酷华丽的HTML5 canvas带棱镜效果的幻灯片特效. 这个特效在每个幻灯片的前面放置一个图形.并将图形制作为三棱镜效果.它底下的幻灯片图片会被"折射"到棱镜上面 ...
- List operations
The + operator concatenates lists: Similarly, the * operator repeats a list a given number of items: ...
- Lumia 1520 IE mobile window.devicePixelRatio
Lumia 1520 IE11 mobile -> window.devicePixelRatio = 2.217964285714286 Lumia 1520 UAP 环境 -> win ...
- Gson解析List的一点小问题
这阵子在使用gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要解析list集合,查资料都是使用TypeToken解决,相对比较麻烦,下面为大伙推荐一种简便的 ...
- WebApp之H5登录注册
代码indexhtml <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- 2018年湘潭大学程序设计竞赛 Fibonacci进制
Fibonacci数是非常有名的一个数列,它的公式为 f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=2. 我们可以把任意一个数x表示成若干不相同的Fibonacci数的和, 比如说1 ...