繁体   English   中英

Python:使用列表中的运算符的数学运算

[英]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]

所以在这里你指定了一个函数,它接受参数xy并计算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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM