如何在Python中制作中缀到后缀的转换表?

2024-10-01 17:39:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我找不到任何将输出更改为表的解决方案。有人能帮忙吗?谢谢。 我尝试过搜索Python列表Modul,但是没有帮助。 我没有找到任何建议将后缀答案输入到表中。你知道吗

def infixToPostfix(infixexpr):
tingkatan_operator = {}
tingkatan_operator["^"] = 4
tingkatan_operator["*"] = 3
tingkatan_operator["/"] = 3
tingkatan_operator["+"] = 2
tingkatan_operator["-"] = 2
tingkatan_operator["("] = 1

operator_stack = []

postfix_list = []

for token in infixexpr:
    if token in "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" or token in "0123456789":
        postfix_list.append(token)
        print ("    Stack  : ",operator_stack)
        if operator_stack == []:
            print ("    Top    : ")
        else :
            print ("    Top    : ",operator_stack[-1])
        print ("    Output : ",postfix_list)
        print ()

    elif token == "(":
        operator_stack.append(token)
        print ("    Stack  : ",operator_stack)
        if operator_stack == []:
            print ("    Top    : ")
        else :
            print ("    Top    : ",operator_stack[-1])
        print ("    Output : ",postfix_list)
        print ()

    elif token == ")":
        topToken = operator_stack.pop()
        while topToken != "(":
            postfix_list.append(topToken)
            topToken = operator_stack.pop()
            print ("    Stack  : ",operator_stack)
            if operator_stack == []:
                print ("    Top    : ")
            else :
                print ("    Top    : ",operator_stack[-1])
            print ("    Output : ",postfix_list)
            print ()

    elif token == ";":
        topToken = operator_stack.pop()
        if token != ")":
            postfix_list.append(topToken)
            print ("    Stack  : ",operator_stack)
            if operator_stack == []:
                print ("    Top    : ")
            else :
                print ("    Top    : ",operator_stack[-1])
            print ("    Output : ",postfix_list)
            print ()

    else :
        while (len(operator_stack)!=0) and (tingkatan_operator[operator_stack[-1]] >= tingkatan_operator[token]):
            postfix_list.append(operator_stack.pop())
            print ("    Stack  : ",operator_stack)
            if operator_stack == []:
                print ("    Top    : ")
            else :
                print ("    Top    : ",operator_stack[-1])
            print ("    Output : ",postfix_list)
            print ()
        operator_stack.append(token)

while (len(operator_stack)!=0):
    postfix_list.append(operator_stack.pop())
    print ("    Stack  : ",operator_stack)
    if operator_stack == []:
        print ("    Top    : ")
    else :
        print ("    Top    : ",operator_stack[-1])
    print ("    Output : ",postfix_list)
    print ()

return "".join(postfix_list)

} tingkatan的意思是“水平”

print ()
print ("                 PROGRAM INFIX TO POSTFIX ")
print ()

def menu():
infix1 = (input("    PUT YOUR INFIX HERE : "))
print()

infix = list(infix1.replace(" ", ""))

Postfix = infixToPostfix(infix)
print()
print("    Postfix from ",infix1," is ",Postfix)
print()
n = input("    Wanna go again? (Y/N):")
if n in ["Y","y"]:
    print()
    menu()
elif n in ["N","n"]:
    exit()

menu()

我认为这是一个非常好的程序转换中缀后缀。但是我的讲座想让我把它的输出转换成一个表格。我很高兴你能帮助我。谢谢

Like this


Tags: intokenoutputifstacktopoperatorelse

热门问题