python 输入:7#6$5#12 输出:226
输入:7#6$5#12
输出:226
其中:x#y = 2*x+3*y+4
其中:x$y = 3*x+y+2 ,并且优先级最高
如果:两数都是#,计算则从左到右
如果:两数都是$,计算也是从左到右,但优先级最高
所以编码实现计算如下式子的结果:
7#6$5#12
计算过程如下:
=7#(3*6+5+2)#12
=7#25#12
=(2*7+3*25+4)#12
=93#12
=2*93+3*12+4
=226
请编码实现??
import re
a = "7#6$5#12"
b=re.findall(r"\w+|[#$]",a)
print(b)
i = "$" in b and b.index("$")
while i >= 1:
x = int(b[i-1])
y=int(b[i+1])
r=3*x+y+2
b.pop(i)
b.pop(i)
b[i-1]=r
if "$" in b:
i = b.index("$")
else:
break
i = "#" in b and b.index("#")
while i >= 1:
x = int(b[i-1])
y = int(b[i+1])
r = 2*x+3*y+4
b.pop(i)
b.pop(i)
b[i-1] = r
if "#" in b:
i = b.index("#")
else:
break
print("结果=",b[0])
输出结果
补充一下 列表 的index(x)方法 的说明:
list.index(“元素”) 当指定的 元素 在列表中不存在时,会报错,如下:
所以当你要找 元素索引时,即调用 list.index()方法时,最好要判断一下你要找的 元素 是否存在列表中,如果存在就找索引,如下:
import re
a="8+94-2*9"
b = re.findall(r"\w+|[\+\-\*\/]", a)
print(b)
到此结束
仅学习用
----------------------------------分隔线----------------------------