有没有办法改变两个整数上使用的算术运算符,具体取决于变量?例如,如果我想编写一个计算器,而不是为每个运算符创建一个新函数,我可以创建一个函数;类似的东西:
ops = {0 : +, 1 : -, 2 : *, 3 : /}
for i in range(4):
print(12ops[i]4)
或:
ops = {0 : +, 1 : -, 2 : *, 3 : /}
i = int(input("What operator?"))
print(12ops[i]4)
示例输出:
16
8
48
3
What operator? 2
8
>>>
但是,这显然不起作用,因为这不是正确的方法(如果有的话),并且只会在字典中返回语法错误。 使用这个,我会创建一些简单的计算器 我觉得这是一个问题,我可能很多人已经问过自己是否可以在python中使用,并且它对将来的其他编程项目非常有用。
有办法做到这一点吗?
答案 0 :(得分:2)
你可以使用函数,它们是Python中的一等公民,所以你可以把它们放在任何地方:
let result = mysql.storeResults()
let checkResult = self.checkResult(result: result, response: response)
response = checkResult.response
var controls: [Control] = []
while let row = result?.next() {
let type = Types(rawValue: row[1].unwrap)!
let control = Control(id: row[0].unwrap, type: type, description: row[2].unwrap, address: row[3].unwrap, city: row[4].unwrap, latitude: Double(row[7].unwrap).unwrap, longitude: Double(row[8].unwrap).unwrap)
controls.append(control)
}
输出:
import operator
ops = {0: operator.add, 1: operator.sub, 2: operator.mul, 3: operator.div}
for i in range(4):
print(ops[i](12, 4))
答案 1 :(得分:0)
在这里你可以做到这一点。
ops = {0 : "+", 1 : "-", 2 : "*", 3 : "/"}
for i in range(4):
print(eval("12"+ops[i]+"4"))
i = int(input("What operator?"))
print(eval("12"+ops[i]+"4"))