在Python中将运算符赋值给变量?

时间:2010-06-06 04:55:05

标签: python compiler-construction operators

将数学应用于变量的常用方法是

a * b

它是否能够计算和操作这样的两个操作数?

a = input('enter a value')
b = input('enter a value') 
op = raw_input('enter a operand')

然后我如何连接op和两个变量ab
我知道我可以将操作与+-%$进行比较,然后分配并计算....

但我能做一些像a op b这样的事情,如何告诉编译器op是一个运算符?

4 个答案:

答案 0 :(得分:45)

您可以使用操作员模块和字典:

import operator
ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.div
}   
op_char = input('enter a operand')
op_func = ops[op_char]
result = op_func(a, b)

答案 1 :(得分:6)

运算符模块http://docs.python.org/library/operator.html公开与几乎所有Python运算符相对应的函数。您可以将运算符符号映射到这些函数以检索正确的函数,然后将其分配给op变量并计算op(a,b)。

答案 2 :(得分:1)

您需要手动将用户输入的字符串与操作数列表进行比较。这里没有int()的类比,因为运算符是语言中的关键字而不是值。

将输入字符串与操作数列表进行比较并确定其对应的运算符后,可以使用Python标准库的operator module来计算将运算符应用于两个操作数的结果。

答案 3 :(得分:0)

我知道这是一个非常老的线程,但是我相信当时人们并不了解eval函数(也许它是Python 3附带的)。所以这是问题的最新答案

a = input('enter a value')
b = input('enter a value') 
op = input('enter an operand')
expression = a + op + b # simple string concatenation
result = eval(expression)

如果输入并非一直有效,则可以使用ast.literal_eval。如果输入不是有效的Python数据类型,则会引发异常,因此如果输入无效,则不会执行代码。 例如。如果abop分别为5、10,+,则 result是15