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 !
Table des matières
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 :
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 :
- Lien de téléchargement GitHub : Portail
- Lien vers le texte original : Lire le texte original
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 !