如何在操作数之间使用字符或字符串作为运算符?

时间:2018-10-30 02:53:03

标签: python string

我想接收运算符(例如'+','-','*','/')并直接在代码主体中使用它。 像这样的东西:

char = raw_input('enter your operator:')
a=1
b=5
c=a char b    #error! how can i do it?

如果用户输入'*',则c为5。

如果用户输入“ +”,则c为6,依此类推。

4 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

import operator

operations = {'+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.truediv}

char = raw_input('enter your operator:')
a = 1
b = 5
c = operations[char](a, b)

print c

输出 (用于char = +)

6

答案 1 :(得分:0)

赞:

var css_locator = 'div.ag-body-container > div[row-id="0"] > div[col-id="0"] .ag-selection-checkbox :not(.ag-hidden)';

var checkbox= element(by.css(css_locator));
browser.wait(ExpectedConditions.elementToBeClickable(checkbox), 5000);
checkbox.click();

您还必须将a和b转换为字符串,a=1 b=2 op = '+' result = eval('{}{}{}'.format(a, op, b)) # result = 3 才能正常工作。

答案 2 :(得分:0)

或使用:

from operator import *
char = raw_input('enter your operator:')
a=1
b=5
c={'+':add,'-':sub,'*':mul,'/':truediv}
print(c[char](a,b))

int.some operator name

char = raw_input('enter your operator:')
a=1
b=5
c={'+':int.__add__,'-':int.__sub__,'*':int.__mul__,'/':int.__truediv__}
print(c[char](a,b))

两种情况下的演示输出:

enter your operator:*
5

答案 3 :(得分:0)

这可能比使用operators慢,但我提供的链接可能会有所帮助,而使用lambda的另一种方法可能会有助于理解。使用switch dict方法(例如其他人使用的explained here),我正在使用lambda使用以下operators dict将输入关联到自定义方法中:

operators = {
    '-': lambda a, b: a-b,
    '+': lambda a, b: a+b,
    '/': lambda a, b: a/b,
    '*': lambda a, b: a/b)
char = raw_input('enter your operator:')
a=1
b=5
c=operations[char](a, b)
print(c)