8

我有一个包含比较运算符列表的数组。如何随机选择一个来使用?我尝试了以下但失败了。

from random import choice
logi = ["<",">","=="]
n=20
n2 = choice(range(1,100))
if n choice(logi) n2: print n2
4

4 回答 4

12

看看operator

import operator
logi = [operator.lt, operator.gt, operator.eq]

...

if choice(logi)(n, n2):
    print n2
于 2013-10-17T15:18:39.330 回答
5

您不想采用运算符的文本表示,而是采用一些功能表示。为此,操作员模块是完美的:

import operator

logi = [operator.lt, operator.gt, operator.eq]

然后,您可以使用以下方法应用此功能choice

n = 20
n2 = choice(range(1,100))
if choice(logi)(n, n2): 
    print n2
于 2013-10-17T15:20:25.947 回答
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
于 2013-10-17T15:19:08.783 回答
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
于 2013-10-17T15:33:48.787 回答