生成以前没有生成过的数字或字符串?

2024-04-18 11:37:40 发布

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

我正在创建一个以黑杰克为灵感的游戏,我使用以下代码生成牌组和手:

suits = 'SCHD'
values = '23456789TJQKA'

deck = tuple(''.join(card) for card in itertools.product(values, suits))

dealershand = random.sample(deck, 1)
yourhand    = random.sample(deck, 2)

这样做的问题是,在“dealershand”和“yourhand”中提取同一张卡的可能性很小。我想检查该卡是否已经存在,如果已经存在,则生成另一张卡。像这样:

while yourhand is in dealershand:
    yourhand=random.sample(deck,2)

Tags: samplein游戏forrandomcard代码生成values
2条回答

您可以使用random.shuffle(deck)来洗牌牌组(需要是list而不是tuple),然后您可以使用deck.pop()一次抽一张牌。你知道吗

有一种安全的方法:

from itertools import product
from random import sample
suits = 'SCHD'
values = '23456789TJQKA'

deck = tuple(''.join(card) for card in product(values, suits))

dealershand = sample(deck, 1)
yourhand    = sample(tuple([x for x in deck if x not in dealershand]), 2)

相关问题 更多 >