如何“撤消”带有加号和加号的字符串以计算它们?
例如,我有一个字符串:
'6*1+7*1+1*7'
我试过 int() 但我有错误。如何撤消整个字符串以获得纯整数计算?
如何“撤消”带有加号和加号的字符串以计算它们?
例如,我有一个字符串:
'6*1+7*1+1*7'
我试过 int() 但我有错误。如何撤消整个字符串以获得纯整数计算?
您必须通过解析字符串并计算结果来实际实现您想要支持的操作。一个简单的解析器看起来像:
>>> import functools,operator
>>> sum(functools.reduce(operator.mul, map(int, summand.split('*')), 1)
... for summand in '6*1+7*1+1*7'.split('+'))
20
请注意,内置eval
可以在一次性脚本或交互式控制台中工作,但它将字符串解释为 Python 源代码,因此允许控制字符串的任何人(即用户)执行任意 Python 命令。
使用eval()
:
In [177]: eval('6*1+7*1+1*7')
Out[177]: 20
或exec
:
In [188]: exec compile('6*1+7*1+1*7','None','single')
Out[188]: 20