根据循环或用户输入更改两个数字的运算符 - Python

时间:2017-11-23 21:44:10

标签: python math operators calculator

有没有办法改变两个整数上使用的算术运算符,具体取决于变量?例如,如果我想编写一个计算器,而不是为每个运算符创建一个新函数,我可以创建一个函数;类似的东西:

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中使用,并且它对将来的其他编程项目非常有用。

有办法做到这一点吗?

2 个答案:

答案 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"))