Ich schreibe Code, um Zeichenfolgen für mathematische Ausdrücke zu analysieren, und habe festgestellt, dass die Reihenfolge, in der verkettete Potenzoperatoren in Python ausgewertet werden, von der Reihenfolge in Excel abweicht.
Von http://docs.python.org/reference/expressions.html :
"Somit werden in einer nicht parästhesierten Folge von Potenz- und unären Operatoren die Operatoren von rechts nach links ausgewertet (dies schränkt die Auswertungsreihenfolge für die Operanden nicht ein): -1 * 2 ergibt -1." *
Dies bedeutet, dass in Python:
2**2**3
als ausgewertet wird2**(2**3) = 2**8 = 256
In Excel funktioniert es umgekehrt: 2^2^3
wird als ausgewertet(2^2)^3 = 4^3 = 64
Ich muss jetzt eine Implementierung für meinen eigenen Parser auswählen. Die Excel-Reihenfolge ist einfacher zu implementieren, da sie die Bewertungsreihenfolge der Multiplikation widerspiegelt.
Ich fragte einige Leute im Büro, wie sie sich für die Bewertung fühlten, 2^2^3
und bekam gemischte Antworten.
Kennt jemand gute Gründe oder Überlegungen für die Python-Implementierung? Und wenn Sie keine Antwort haben, kommentieren Sie bitte das Ergebnis, das Sie aus dem Bauchgefühl erhalten - 64
oder 256
?