随机选择的Python错误

随机选择的Python错误,python,Python,我正在做一个小程序(测验)来测试这种语言,我被困在一个函数中 让我解释一下 我希望从我的数据库中接收值,然后只使用其中的5个,因此对于每个问题,用户回答,并移动到下一个问题,直到到达最后一个问题。 到目前为止,我掌握的代码是 def escolhaFinal(id_tema, id_tipo): cur = conn.cursor() cur.execute("SELECT question,op1,op2,op3,op4,correto FROM questions where

我正在做一个小程序(测验)来测试这种语言,我被困在一个函数中 让我解释一下 我希望从我的数据库中接收值,然后只使用其中的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.choice只接受1个参数。在代码中

 random.choice(l,5)
5个人应该做什么?文档中的选项是:“从非空序列seq返回一个随机元素。如果seq为空,则引发IndexError。”


因此,将行更改为仅使用1个参数,并指定值以供以后使用(即调整代码的其余部分)。

random.choice仅使用1个参数。在代码中

 random.choice(l,5)
5个人应该做什么?文档中的选项是:“从非空序列seq返回一个随机元素。如果seq为空,则引发IndexError。”


因此,请将该行更改为仅使用1个参数,并指定值以供以后使用(即调整代码的其余部分)。

看起来您希望使用的是
随机。请改为使用sample
,因为这允许您从列表中返回多个随机选择的项目,例如:

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

看起来您希望使用的是
random.sample
,因为这允许您从列表中返回多个随机选择的项目,例如:

>>> import random
>>> myList = range(100)
>>> winners = random.sample(myList, 5)
>>> print winners
[79, 10, 32, 98, 82]
>>>
从您的文档中,您有:

随机选择(seq)

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

若要选择多个图元,可以使用以下方法之一:

[random.choice(l) for i in range(5)]
或选择唯一的元素:

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]
从您的文档中,您有:

随机选择(seq)

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

若要选择多个图元,可以使用以下方法之一:

[random.choice(l) for i in range(5)]
或选择唯一的元素:

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]

对于他试图做的事情,这更符合逻辑。回答的比他要求的要多,所以我想库多兹是在修正它,而不是回答它。对于他试图做的事情来说,这更符合逻辑。而且回答的比他要求的要多,所以我想库多兹是在修理它而不是回答它。