可能重复:
python convert a string to an operator
大家好,各位!
我刚开始学习Python,有一个简单的问题。
能否得到这个表达式的答案(计算)?
['10', '/', '5']我的问题是:我只将'10'和'5'转换为10和5。如何将'/'转换为/?我正在使用Python2.7
发布于 2011-03-27 09:28:44
我认为最好的办法是:
检索列表的第一个元素,并将其转换为int。
检索列表中的第三个元素并将其转换为int
将第二个元素映射到一个函数以计算结果
import sys
element = ['10', '/', '5']
operators = {
'/': lambda a, b: a / b,
'+': lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
}
try:
a = int(element[0])
b = int(element[2])
result = operators[element[1]](a, b)
print result
except:
sys.exit(1)正如ThiefMaster所说,您也可以使用运算符模块。代之以:
operators = {
'/': lambda a, b: a / b,
'+': lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
}通过
import operator
operators = {
'/': operator.div,
'+': operator.add,
'-': operator.sub,
'*': operator.mul,
}发布于 2011-03-27 09:24:16
eval(''.join(['10', '/', '5']))上述解决方案适用于任何表达式。例如:
eval(''.join(['10', '/', '5', '+', '3', '*', '2']))唯一的问题是eval是邪恶的..。如果您想要制作表达式计算器,您应该编写一个lexer,一个语法解析器,生成表达式的AST,然后计算它。
发布于 2011-03-27 09:26:45
operator module包含表示操作符的函数:
import operator
# Now operator.div(a, b) is the same as a / bhttps://stackoverflow.com/questions/5448297
复制相似问题