Conception d'algorithmes Python - expression de suffixe

Code source de conception de l'algorithme Python : https://github.com/MakerChen66/Python3Algorithm

Déclaration de copyright : L'originalité n'est pas facile, cet article interdit le plagiat, la réimpression, la contrefaçon doit être étudiée !

1. Expression suffixe

Bien que les gens utilisent principalement la notation d'expression infixe dans les expressions algébriques, les expressions postfixées (également appelées expressions polonaises inversées) sont plus faciles à analyser de manière algorithmique.

Expressions infixes : les opérateurs binaires sont toujours placés entre les deux opérandes qui leur sont associés, tels que 5 + 2, 9 * 4
Expressions postfixées : les opérateurs binaires sont placés après leurs opérandes, tels que 5 2 + , 9 4 *

Par exemple, les expressions suivantes sont équivalentes, la première est une expression infixe et la seconde est une expression postfixée.
2 * (1 + 3) = 2 1 3 + *

Lors de l'implémentation de votre premier analyseur d'expression, la notation postfixe et préfixe est la meilleure solution. Correspondant à la pile est : pousser dans la pile (append()), sortir de la pile (pop())...

Implémentation de l'algorithme 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)

Remarque : stack.append() signifie pousser dans la pile, stack.pop() signifie sortir de la pile et split() signifie diviser

Résultat de sortie :
insérez la description de l'image ici
comme indiqué sur la figure, le résultat de l'opération est 8 et le résultat est correct

2. Téléchargement du code source

Téléchargement du code source de conception de l'algorithme Python :

3. Informations sur l'auteur

Auteur : Xiaohong's Fishing Daily, objectif : rendre la programmation plus intéressante !

Compte public original de WeChat : " Xiaohong Xingkong Technology ", axé sur les algorithmes, les robots d'exploration, les sites Web, le développement de jeux, l'analyse de données, le traitement du langage naturel, l'IA, etc., dans l'attente de votre attention, laissez-nous grandir et coder ensemble !

Remarque sur les droits d'auteur : cet article interdit le plagiat et la réimpression, et toute violation doit faire l'objet d'une enquête !

Je suppose que tu aimes

Origine blog.csdn.net/qq_44000141/article/details/122352202
conseillé
Classement