将列表中的随机值分配给变量时出现类型错误?

2024-06-26 14:19:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,我想把这个列表中的一个随机元素分配给一个新变量五次,以生成一手牌。我已经找过了,我似乎不明白为什么随机选择正在导致错误。在

import random

cards = { '2' '3' '4' '5' '6' '7' '8' '9' 'J' 'Q' 'K' 'A' }

for newCard in range(5):
        newDraw = random.choice(cards)
        playerdeck.append(newDraw)
        if newDraw in playerdeck:
                playermatches = playermatches + 1
        newDraw = oldDraw

当我试图运行它时,我得到了一个错误:

^{pr2}$

Tags: inimport元素列表for错误rangerandom
3条回答

因此,请使用列表:

>>> cards = ['2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K', 'A']
>>> random.choice(cards)
'9'

您使用了{和{},而不是[和{}来定义{}。因此,它是setset不是有序的,因此尝试对其进行索引是没有意义的。random.choice需要索引到一个集合中,才能从中提取项。无论如何,一个快速的解决方法是替换这个:

random.choice(cards)

有了这个:

^{pr2}$

编辑:同时在集合中的元素之间添加逗号。在

你的集合定义有问题。 当您并排有多个字符串时,python将它们连接起来,就像您使用'A' + 'B'一样。所以生成了一个只有一个元素的集合'23456789JQKA'

你不需要一个集合或列表来完成:

>>> cards = '23456789JQKA'
>>> random.choice(cards)

附言: 虽然集合不能被索引,但它们可以被迭代:

^{pr2}$

注:订单可能不被保留。在

相关问题 更多 >