[英]Python: Mathematical Operations using Operators from a list
假设我有一个包含数学运算符的列表,就像这样
operators = ['+','-','*','/']
而且我从这里开始随机操作,就像这样
op = random.choice(operators)
如果我取两个数字,比如4和2,我怎样才能让Python用数字进行数学运算(名为'op')?
您最好不要将运算符指定为文本 。 只需使用lambda表达式或operator
模块:
import operator
import random
operators = [operator.add,operator.sub,operator.mul,operator.floordiv]
op = random.choice(operators)
然后,您可以通过使用两个参数调用它来调用op
,例如:
result = op(2,3)
例如:
>>> import operator
>>> import random
>>>
>>> operators = [operator.add,operator.sub,operator.mul,operator.floordiv]
>>> op = random.choice(operators)
>>> op
<built-in function sub>
>>> op(4,2)
2
所以你可以看到, random
选择了sub
运算符,所以它从4
减去2
。
如果你想定义一个operator
不支持的函数,你可以使用lambda表达式,如:
operators = [operator.add,lambda x,y:x+2*y]
所以在这里你指定了一个函数,它接受参数x
和y
并计算x+2*y
(当然你可以自己定义一个任意表达式)。
如果您完全确定传递给它的内容是安全的,您可以使用eval
:
num1 = 4
num2 = 2
operators = ['+','-','*','/']
op = random.choice(operators)
res = eval(str(num1) + op + str(num2))
请记住, eval
执行代码而不对其进行任何检查,因此请小心。 请参阅此使用时,详细了解该主题ast
做了安全评估。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.