将数学应用于变量的常用方法是
a * b
它是否能够计算和操作这样的两个操作数?
a = input('enter a value')
b = input('enter a value')
op = raw_input('enter a operand')
然后我如何连接op和两个变量a
和b
?
我知道我可以将操作与+
,-
,%
,$
进行比较,然后分配并计算....
但我能做一些像a op b
这样的事情,如何告诉编译器op是一个运算符?
答案 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数据类型,则会引发异常,因此如果输入无效,则不会执行代码。
例如。如果a
,b
和op
分别为5、10,+,则
result
是15