在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'
这样的算术表达式。