我有一个数组与比较运算符的列表。我如何随机选择一个使用?我尝试了以下,但失败了。随机使用比较运算符?
from random import choice
logi = ["<",">","=="]
n=20
n2 = choice(range(1,100))
if n choice(logi) n2: print n2
我有一个数组与比较运算符的列表。我如何随机选择一个使用?我尝试了以下,但失败了。随机使用比较运算符?
from random import choice
logi = ["<",">","=="]
n=20
n2 = choice(range(1,100))
if n choice(logi) n2: print n2
在operator
看看:
import operator
logi = [operator.lt, operator.gt, operator.eq]
...
if choice(logi)(n, n2):
print n2
是的,你可以 - 使用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
你想不采取运算符的文本表示,而是一些功能表示。为此,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
+1说明 –
作品很棒 - 感谢Valentin; – Ahdee
偏航!
由于@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
诅咒你和你的手指快! ;) –
这太酷了;谢谢arshajii – Ahdee
@Adede没问题,很高兴我能帮上忙。不要忘记[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – arshajii