我有一个包含比较运算符列表的数组。如何随机选择一个使用?我尝试了以下但失败了。
from random import choice
logi = ["<",">","=="]
n=20
n2 = choice(range(1,100))
if n choice(logi) n2: print n2
答案 0 :(得分:12)
看看operator
:
import operator
logi = [operator.lt, operator.gt, operator.eq]
...
if choice(logi)(n, n2):
print n2
答案 1 :(得分:5)
您不想采用运算符的文本表示,而是采用一些功能表示。为此,operator module是完美的:
import operator
logi = [operator.lt, operator.gt, operator.eq]
然后,您可以使用choice
:
n = 20
n2 = choice(range(1,100))
if choice(logi)(n, n2):
print n2
答案 2 :(得分:3)
是的,你可以 - 使用operator
模块。
from random import choice
from operator import lt, gt, eq
logi = [lt, gt, eq]
n=20
n2 = choice(range(1,100))
if choice(logi)(n, n2): print n2
答案 3 :(得分:1)
航向!
正如 @sweeneyrod 所说,我必须警告。建议 不 使用eval
,尤其是用户输入时。这只是可能的方式,但 不推荐一个
from random import choice
logi = ["<",">","=="]
n=20
n2 = choice(range(1,100))
if eval("n%sn2"%choice(logi)): print n2
或
import operator
logi = [operator.lt, operator.gt, operator.eq]
n=20
n2 = choice(range(1,100))
if choice(logi)(n, n2): print n2