计算器之可计算浮点型,负数和小括号。
Posted alecc1124
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算器之可计算浮点型,负数和小括号。相关的知识,希望对你有一定的参考价值。
接着昨天的整型。整型计算器=??啥都不是。
又来了个新版,与其说是新版,倒不如说是翻版。
直接奉上全部代码,代码边上都有注解
1 import re 2 def size(ch): #定义一个基础的四则运算用于基础计算 3 ch=re.sub(‘--‘,‘+‘,ch)#去除两个减号相连 4 list_num=re.findall(‘(-\d+\.\d+|\d+\.\d+|\d+|-\d+|/|\*)‘,ch) #定义一个对象接收所有运算对象包括浮点 5 num=0 6 list_del=[]#基于四则运算的基本原则,不管加减只论乘除,最后结果在列表中相加,减号直接当成数据直接处理 7 for i in list_num: 8 if i==‘/‘or i==‘*‘:#判断有无乘除 9 if i==‘*‘:#有的话顺序执行乘除 10 list_num[num+1]=str(float(list_num[num-1])*float(list_num[num+1])) 11 elif i==‘/‘: 12 list_num[num+1]=str(float(list_num[num-1])/float(list_num[num+1])) 13 list_del.append(num-1) 14 list_del.append(num)#记录需要删除的前面两个元素 15 num+=1 16 m=0 17 for i in list_del: 18 del list_num[i-m] 19 m+=1#删除时需要自减,不然会重复删除大的数据 20 del list_del #移除空列表 21 sum=0 22 for j in list_num: 23 sum+=float(j) 24 return sum #返回计算好的值 25 while True: 26 date=input(‘输入计算数字的字符串:‘) 27 date=re.sub(‘\s*‘,‘‘,date)#去除输入字符串中的空格 28 date=re.sub(‘\+-|-\+‘,‘-‘,date)#去除+-符号相连 29 if re.search(‘[a-zA-Z]‘,date)!=None: #匹配字母 30 print(‘不能输入字母‘) 31 else: 32 if len(re.findall(‘\(‘,date))!=len(re.findall(‘\)‘,date)): #求两匹配列表长度 33 print(‘输入的左右括号不一致‘) 34 else: 35 while True: 36 if re.search(‘\(‘,date)!=None: 37 date_m=re.search(‘\([^()]+\)‘,date).group()#正则匹配最内层括号及内层数据 38 date_x=re.sub(‘\(|\)‘,‘‘,date_m)#正则匹配去除两边括号 39 date_n=re.sub(‘\+‘,‘\+‘,date_m) 40 date_n=re.sub(‘\*‘,‘\*‘,date_n) 41 date_n=re.sub(‘\(‘,‘\(‘,date_n) 42 date_n = re.sub(‘\)‘, ‘\)‘, date_n)#将特殊字符普通化 43 date=re.sub(date_n,str(size(date_x)),date)#将括号里面的字符计算出来并替代原来字符串 44 else: 45 print(size(date))#输出结果 46 break #退出循环
emm,没有照片
以上是关于计算器之可计算浮点型,负数和小括号。的主要内容,如果未能解决你的问题,请参考以下文章