迭代一系列运算符

时间:2015-12-16 13:04:12

标签: python testing operator-keyword

是否有可能/有没有办法迭代一系列运算符,如下例所示?

a, b = 5, 7
for op in (+, -, *, /):
    print(a, str(op), b, a op b)

一个可能的用例是在某些抽象数据类型上测试各种运算符的实现,其中这些运算符被重载。

3 个答案:

答案 0 :(得分:5)

您可以使用操作员模块。

for op in [('+', operator.add), ('-', operator.sub), ('*', operator.mul), ('/', operator.div)]:
    print("{} {} {} = {}".format(a, op[0], b, op[1](a, b)))

答案 1 :(得分:1)

您可以创建自己的操作,然后遍历它们。

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

def mult(a, b):
    return a * b

def div(a, b):
    return a / b
a, b = 5, 7

operations = {'+': add,'-': sub, '*':mult, '/': div}
for op in operations:
    print(a, op, b, operations[op](a, b))

答案 2 :(得分:0)

试试这个:

a,b=5,7
for op in ['+','-','*','/']:
    exec 'print a' + op + 'b'

希望这有帮助!