Как сделать (TABLE) преобразования инфикса в постфикс в Python? - PullRequest
0 голосов
/ 09 ноября 2018

Я не могу найти никакого решения, чтобы изменить вывод в таблицу на Python. Может кто-нибудь помочь? Благодарю. Я пробовал искать модули Python Lists, но это не помогает. Я не нашел никаких предложений для ввода ответа постфикса в таблицу.

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)

} тингкатан означает «уровень»

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()

Я думаю, что это действительно хорошие программы для конвертации инфикса в постфикс. Но моя лекция хотела, чтобы я изменил вывод в таблицу. Я так рад, что вы можете мне помочь. Спасибо

Как это

...