python简单计算器综合实验报告_python之简单计算器

importre#问题:让用户选择1,2不现实,如何让用户自动加减乘除#思考:现在已经能够处理,单个的加减或乘除#可否在混合中先分组出(乘除) eg: [‘8+9+‘,‘9*4/3‘,‘-‘,‘4*2‘,‘+5-2’#这样可以处理乘除,如何分组呢?? [bc] 匹配b或c

##8+9+9*4/3-4*2+5-2#num = input("please input:")#s = re.split(r‘(\d[*/]\d[*/]\d)‘, num)#print(s)

#coding:utf-8

#将输入的字符串格式统一转换成列表,将数字、符号、括号都成一个独立元素,#如: 12+3*(14+5) ----> ["12","+","3","*","(","14","+","5",")"]

defformat_input(input_re_value):

input_re_value= input_re_value.replace(" ", "") #去掉空格

print(input_re_value)

format_list=[]for i ininput_re_value:

format_list.append(i)#独立元素

snum =0while 1:try:if format_list[snum].isnumeric(): #如果列表第一个是“数字”,则返回true

if format_list[snum + 1].isnumeric():

format_list[snum]= format_list[snum] + format_list[snum + 1]

format_list.pop(snum+ 1)else:

snum+= 1

else:

snum+= 1

exceptIndexError:returnformat_list#计算没有括号的列表的值。

defcomput(re_value):while "*" in re_value or "/" inre_value:for i, j inenumerate(re_value):if j == "*":

re_cheng= float(re_value[i - 1]) * float(re_value[i + 1])

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.insert(i- 1, re_cheng)if j == "/":

re_chu= float(re_value[i - 1]) / float(re_value[i + 1])

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.insert(i- 1, re_chu)while "+" in re_value or "-" inre_value:for i, j inenumerate(re_value):if j == "+":

re_jia= float(re_value[i - 1]) + float(re_value[i + 1])

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.insert(i- 1, re_jia)if j == "-":

re_jian= float(re_value[i - 1]) - float(re_value[i + 1])

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.pop(i- 1)

re_value.insert(i- 1, re_jian)returnre_value[0]#通过循环,先查找列表的第一个")",然后在")"位置向列表前找到第一个"("所在位置,#并将其中的元素提取出来,生成新的列表,交给comput计算,#返回值再插入列表当中,继续循环,直到没有"("为止

defbracket_filter(list1):while "(" inlist1:

i= list1.index(")")for m in range(i, -1, -1): #start, stop, step

if list1[m] == "(": #往前找,找到第一个"("

list_new = list1[(m + 1):i]

re_res=comput(list_new)

list1.insert(m, str(re_res))for item1 in range(i + 1 -m):

list1.pop(m+ 1)break

returncomput(list1)

input_sn= input("pls input:")

f_re=format_input(input_sn)

result=bracket_filter(f_re)print("The result is:", result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值