Diseño de algoritmo de Python - expresión de sufijo

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.

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:
inserte la descripción de la imagen aquí
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:

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!

Supongo que te gusta

Origin blog.csdn.net/qq_44000141/article/details/122352202
Recomendado
Clasificación