2013-04-03 27 views
0

評估字符串算術表達式如何評估如下:使用python

a=b=c=d=e=0 # initially 

如果用戶輸入:

"a=b=4" as a string, it should modify the existing value. 

那麼結果會像A = 4,B = 4 如果用戶輸入:

"a=(c=4)*2", it should evaluate as expression and update the values. 

所以導致將是這樣一個= 8,C = 4

括號可以進一步嵌套。

任何幫助將非常感激。我正在使用python。

+0

看看錶達式樹,它是你需要在這裏做什麼。 – RyPope 2013-04-03 19:41:44

+0

使用變量作爲字符串裏面的表達式是創建故障:( – Somesh 2013-04-03 19:47:20

回答

2

如果這是一個不重要的安全控制檯腳本,您可以使用exec()來執行數學語句。但是,python不支持代碼,如a=(c=4)*2,所以它不可能在本地執行。

但是,exec()是一個巨大的安全漏洞,如果這是在一個Web服務器上運行。如果這個預期是一些地方不信任和潛在的惡意用戶可以提交的命令,你應該考慮要麼消毒,並自己進行解析,或implementing sandboxing.

TL; DR既然你自定義的工作命令不支持,您應該編寫自己的解析器來處理和執行這些解析器,而不用擔心執行不受信任的代碼。