expr=input("输入表达式:")           #确定表达式
Py_stacka=list()                     #创建一个栈
Py_stackb=list()                     #创建一个栈
Py_stackc=list()                     #创建一个栈

bool1=0
bool2=0
bool3=0

err=""

for c in expr:                      #遍历expr中的字符,并依次存储到c中


    if c=="(":                    
        Py_stacka.append(c)          #将左括号入栈
    elif c==")":
        if not Py_stacka:            #如果是空栈
            #print ("缺左括号(")
            bool1=1
            #break                   #循环提前结束,不执行循环后的else语言
        if bool1 != 1:
            Py_stacka.pop()              #出栈

    if c=="[":                    
        Py_stackb.append(c)          #将左括号入栈
    elif c=="]":
        if not Py_stackb:            #如果是空栈
            #print ("缺左括号[")
            bool2=1
            #break                   #循环提前结束,不执行循环后的else语言
        if bool2 != 1:
            Py_stackb.pop()              #出栈

    if c=="{":                    
        Py_stackc.append(c)          #将左括号入栈
    elif c=="}":
        if not Py_stackc:            #如果是空栈
            #print ("缺左括号{")
            bool3=1
            #break                   #循环提前结束,不执行循环后的else语言
        if bool3 != 1:
            Py_stackc.pop()              #出栈


else:    #循环结束后执行else语句
    if bool1==1:
        err="缺左括号( "
    if bool2==1:
        err=err+"且 缺左括号[ "
    if bool3==1:
        err=err+"且 缺左括号{ "
    print(err)

    if not Py_stacka and not Py_stackb and not Py_stackc and bool1==0 and bool2==0 and bool3==0:                #如果是空栈
        print("匹配")
    #else:
        #print("缺右括号。")
    

            

右括号无法匹配。

发表评论