我想接收运算符(例如'+','-','*','/')并直接在代码主体中使用它。 像这样的东西:
char = raw_input('enter your operator:')
a=1
b=5
c=a char b #error! how can i do it?
如果用户输入'*',则c为5。
如果用户输入“ +”,则c为6,依此类推。
答案 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)