繁体   English   中英

Python错误与random.choice

[英]Python error with random.choice

我正在编写一个用于测试该语言的小程序(测验),但我陷入了一个函数中。所以让我解释一下,我想从数据库中接收值,然后仅使用其中的5个,因此对于每个问题,用户都应回答,然后移至下一个问题,直到找到最后一个。 我到目前为止的代码是

def escolhaFinal(id_tema, id_tipo):
    cur = conn.cursor()
    cur.execute("SELECT question,op1,op2,op3,op4,correto FROM questions where id_tema = %s and id_grau = %s", (id_tema,id_tipo))
    data = cur.fetchall()
    l = list(data)
    random.choice(l,5)
    for row in l:
            print(l)


    cur.close()
    conn.close()

但是我收到此错误TypeError:choice()接受2个位置参数,但给出了3个

关于此功能有什么帮助吗?

似乎您想使用random.sample ,因为它可以让您从列表中返回多个随机选择的项目,例如:

>>> import random
>>> myList = range(100)
>>> winners = random.sample(myList, 5)
>>> print winners
[79, 10, 32, 98, 82]
>>>

random.choice()的文档中,您可以:

random.choice(seq)

从非空序列seq返回一个随机元素。 如果seq为空,则引发IndexError。

要选择多个元素,可以使用如下列表理解

[random.choice(l) for i in range(5)]

random.sample()选择唯一元素:

random.sample(l, 5)

输出:

>>> import random
>>>
>>> l = [1, 2, 3, 4, 5]
>>> random.sample(l, 3)  # unique elements
[4, 2, 5]
>>>
>>> [random.choice(l) for i in range(3)]  # Note that we have 3 twice!
[3, 5, 3]

random.choice仅接受1个参数。 在你的代码中

 random.choice(l,5)

这五个应该做什么? 文档指出可供选择:“从非空序列seq返回随机元素。如果seq为空,则引发IndexError。”

因此,请更改该行以仅使用1个参数,然后分配值以供以后使用(也可以调整其余代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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