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

在python中将运算符赋值给变量?,python,compiler-construction,operators,Python,Compiler Construction,Operators,将数学应用于变量的常用方法是 a * b 它能像这样计算和操作两个操作数吗 a = input('enter a value') b = input('enter a value') op = raw_input('enter a operand') 那么如何连接op和两个变量a和b? 我知道我可以将op与+,-,%,$进行比较,然后分配和计算 但是我可以做一些类似于a op b的事情吗,如何告诉编译器op是一个操作符 您可以使用操作员模块和字典: import operator ops

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

a * b
它能像这样计算和操作两个操作数吗

a = input('enter a value')
b = input('enter a value') 
op = raw_input('enter a operand')
那么如何连接op和两个变量
a
b

我知道我可以将op与
+
-
%
$
进行比较,然后分配和计算


但是我可以做一些类似于
a op b
的事情吗,如何告诉编译器op是一个操作符

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

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)

操作符模块公开了几乎所有Python操作符对应的函数。您可以将运算符符号映射到这些函数以检索正确的函数,然后将其分配给op变量并计算op(a,b)。

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


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

我知道这是一个非常古老的线程,但我相信当时人们并不知道
eval
函数(可能是Python 3附带的)。下面是这个问题的最新答案

a=input('输入值')
b=输入(“输入值”)
op=输入('输入操作数')
表达式=a+op+b#简单字符串串联
结果=评估(表达式)
如果预计输入并非始终有效,则可以使用文本评估。如果输入不是有效的Python数据类型,则会引发异常,因此如果不是,则不会执行代码。 例如,如果
a
b
op
分别为5,10,+
Python3.x的
result
为15

应使用
运算符.truediv
运算符.floordiv
,而应使用expression=a+c+b。顺便说一句,使用eval进行用户输入是个坏主意。ast.literal\u eval更好。@SilentGuy你说得很对!我已经更新了我的答案
eval
对于Python3来说并不新鲜。人们之所以不建议使用它,是因为在用户输入上使用它是不安全的。它可以执行某人键入的任何Python表达式(具有任何副作用)。另外,
literal\u eval
仅计算文字。它不能计算像
'5+10'
这样的算术表达式。