#!/usr/bin/env python3# -*- coding:utf-8 -*-from sys import argvfrom decimal import *def delBlank(str): """ Delete all blanks in the str """ ans = "" for e in str: #print(e) if e != " ": ans += e #print(ans) return ansdef getPriority(c): """ 操作符中:"+、-优先级低,*、/、%优先级高" ,^待续 """ if (c=='+' or c=='-'): return 0 elif(c == '*' or c == '/' or c == '%'): return 1 elif (c=='^'): return 2def infix2postfix(str): """ 把中缀表达式转化为后缀表达式: 1、当读到一个操作数时,立即将它放到输出中,读到的是操作符则需要接着判断是否入栈。读到的是左括号则入栈。 2、如果遇到一个右括号,那么就将栈中元素弹出并输出直到遇到左括号为止。但是这个左括号只被弹出,不被输出。 3、在读到操作符时,如果此操作符优先级小于或等于栈顶操作符,则将栈中元素弹出直至(1)遇到左括号(2)栈顶元素为更低优先级 (3)栈为空。操作数中'+','-'优先级最低, 4、如果读到输入的末尾,将栈元素弹出之道该栈变为空栈,将弹出的符号写到输出中。 """ postfix = [] stackOfOperator = [] index,pos,length = -1,0,len(str) while(index < length-1):#python for index in range(length):不行,不馆循环内是否更改index,index都是会从1到length-1。 index +=1 char = str[index] if(char in "0123456789"):#如果是数字,直接输出 pos = index while(index