Código fuente del diseño del algoritmo de Python: https://github.com/MakerChen66/Python3Algorithm
Declaración de derechos de autor: la originalidad no es fácil, este artículo prohíbe el plagio, la reimpresión y la infracción debe investigarse.
Tabla de contenido
1. Expresión de sufijo
Aunque la gente usa principalmente la notación de expresión infija en expresiones algebraicas, las expresiones postfijas (también llamadas expresiones polacas inversas) son más fáciles de analizar algorítmicamente.
Expresiones con sufijos: los operadores binarios siempre se colocan entre los dos operandos asociados con ellos, como 5 + 2, 9 * 4
Expresiones con sufijos: los operadores binarios se colocan después de sus operandos, como 5 2 + , 9 4 *
Por ejemplo, las siguientes Las expresiones son equivalentes, la primera es una expresión infija y la segunda es una expresión posfija.
2 * (1 + 3) = 2 1 3 + *
Cuando está implementando su primer analizador de expresiones, la notación de postfijo y prefijo es la mejor manera de hacerlo. Lo que corresponde a la pila es: insertar en la pila (agregar()), salir de la pila (pop())...
Implementación del algoritmo de Python:
math = {
'+': float.__add__,
'-': float.__sub__,
'*': float.__mul__,
'/': float.__truediv__,
'^': float.__pow__,
}
def postfix(expression):
stack = []
for x in expression.split():
if x in math:
x = math[x](stack.pop(-2), stack.pop(-1))
else:
x = float(x)
stack.append(x)
print(stack.pop())
postfix('1 2 + 4 3 - + 10 5 / *') # 相当于计算 ((1+2)+(4-3))*(10/5)
Nota: stack.append() significa insertar en la pila, stack.pop() significa salir de la pila y split() significa dividir
Resultado de salida:
como se muestra en la figura, el resultado de la operación es 8 y el resultado es correcto
2. Descarga del código fuente
Descarga del código fuente del diseño del algoritmo de Python:
- Enlace de descarga de GitHub: Portal
- Enlace al texto original: Leer el texto original
3. Información del autor
Autor: Xiaohong's Fishing Daily, Objetivo: ¡Hacer la programación más interesante!
Cuenta pública original de WeChat: " Tecnología Xiaohong Xingkong ", centrada en algoritmos, rastreadores, sitios web, desarrollo de juegos, análisis de datos, procesamiento de lenguaje natural, IA, etc. Esperamos su atención, ¡crezcamos y codifiquemos juntos!
Nota de derechos de autor: ¡Este artículo prohíbe el plagio y la reimpresión, y la infracción debe investigarse!