Ahoj,

teoreticky nejlepší přístup je vyrobit si parser, který ti ten výraz převede na 
AST strom, a ten strom pak “provést”, což je vlastně jen průchod do hloubky. 

Ten parser si můžeš vyrobit sám implementací nějakého parser algoritmu - 
vzhledem k tomu, že vstup bude asi celkem malý a gramatika ne moc kompletní, 
tak je to celkem schůdná cesta. Nebo můžeš použit nějakou knihovnu pro tvorbu 
parserů (jsou i pro Python), no a nebo můžeš využít přímo parser Pythonu - 
modul ast. Rozdíl oproti eval() pak bude ten, že bude pod tvoji kontrolou, co 
to bude dělat, takže hodně snížíš bezpečností rizika. 

Když trochu pogooglím, tak najdu:

https://gist.github.com/ircmaxell/1232629

https://stackoverflow.com/q/114586/196206

https://stackoverflow.com/q/594266/196206

https://gist.github.com/mgood/3276107

 ...a spousta dalšího 

Petr Messner

22. 8. 2018 v 9:30, Petr Blahos <petrbla...@gmail.com>:

> Přátelé,
> 
> doporučíte mi někdo knihovnu pro vyhodnocení jednoduchých matemetických
> výrazů se symboly? Představuju si to asi takto: Budu mít text typu:
> expr = """R=1000*(VAR1+VAR2/2)-VAR3"""
> 
> a pak udělám: 
> result = knihovna.funkce(expr, {"VAR1": 54, "VAR2": 8", "VAR3": 982})
> 
> Případně ještě knihovna.zkontroluj_vyraz(expr).
> Potřebuju tam opravdu jenom + - * / a závorky.
> 
> Díky,
> Petr
> --
> http://www.blahos.com/
> http://traceability.cz/
> _______________________________________________
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Odpovedet emailem