题解 | #四则运算#
四则运算
https://www.nowcoder.com/practice/9999764a61484d819056f807d2a91f1e
st = input().replace("{","(").replace("}",")").replace("[","(").replace("]",")") def func(i): nums = [] flag = None while i <len(st): num = 0 if st[i] =="(": #遇到左括号,直接调用函数运算括号里的东西。 i,num = func(i+1) if flag == ")": #当遇到右括号后,跳出当前分支的运算,返回数值 return i,sum(nums) #返回两个参数,i用来记录计算的位置, #sum(nums)记录括号内数值 while i<len(st) and st[i].isdigit(): #识别单个数字遇到符号直接运行后面的程序 num = num*10 +int(st[i]) #第八行func(i+1)输出的i会超出len(st)范围,所以这里 i += 1 #要加上i<len(st)的判断 if nums ==[]: #当nums空填入数据,处理因算式括号反复调用func时nums为空 nums.append(num) if flag =='+': #处理各个符号 nums.append(num) elif flag == '-': nums.append(-num) elif flag =='*': nums.append(nums.pop()*num) elif flag =='/': nums.append(nums.pop()//num) if i<len(st):flag=st[i] #记录下一个符号由于13行的存在,i+1一定是符号或括号 i += 1 #进入下一个运算 return i,sum(nums) print(func(0)[1])