Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据循环或用户输入更改两个数字上的运算符-Python_Python_Math_Operators_Calculator - Fatal编程技术网

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

根据循环或用户输入更改两个数字上的运算符-Python,python,math,operators,calculator,Python,Math,Operators,Calculator,根据变量的不同,有没有办法更改用于两个整数的算术运算符?例如,如果我想编写一个计算器,我可以创建一个函数,而不是为每个操作符创建一个新函数;比如: ops = {0 : +, 1 : -, 2 : *, 3 : /} for i in range(4): print(12ops[i]4) 或: 示例输出: 16 8 48 3 What operator? 2 8 >>> 然而,这显然是行不通的,因为这不是正确的方法(如果有),只会在字典中返回语法错误。 使用这个,我

根据变量的不同,有没有办法更改用于两个整数的算术运算符?例如,如果我想编写一个计算器,我可以创建一个函数,而不是为每个操作符创建一个新函数;比如:

ops = {0 : +, 1 : -, 2 : *, 3 : /}
for i in range(4):
    print(12ops[i]4)
或:

示例输出:

16
8
48
3
What operator? 2
8
>>>
然而,这显然是行不通的,因为这不是正确的方法(如果有),只会在字典中返回语法错误。 使用这个,我可以创建一些东西,比如一个简单的计算器。
我觉得这是一个我和其他很多人都曾问过自己的问题,这在python中是否可行,它对将来的其他编程项目非常有用


有办法做到这一点吗?

您可以使用函数,它们是Python中的一流公民,因此您可以将它们放在几乎任何地方:

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))
产出:

16
8
48
3

这是你怎么做到的

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

这确实有效,而且您使用
eval()
的方式是安全的,但是使用
eval()
通常是不受欢迎的,因为它可能不安全。您是对的@RoryDaulton最好不要使用
eval()
,但是对于这个要求,我觉得没问题。但是我也不建议任何人使用
eval()
我甚至不知道
eval()
的存在,但是你会说第一个答案比这个更好/更有用吗?是的,如果你只是在操作基本操作,那就是最好的答案。就我个人而言,如果这是唯一的情况,我会建议使用手术。但若你们想覆盖这个操作或者你们想添加更复杂的操作,我认为在这种情况下这个操作是行不通的。
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"))