从列表中移动项目到另一个扑克纸牌游戏的Python

问题描述 投票:1回答:2

我试图让扑克游戏在Python。在同时机能的研究我要移动使用的卡在一个单独的(使用的记忆卡)名单。问题是,有时当我打印的手,我可以得到重复。什么是错的我的排序策略,我不知道是什么。你能帮助我吗?

import random

deck = ['AS', 'KS', 'QS', 'JS', '10S', '9S', '8S', '7S', '6S', '5S', '4S', '3S', '2S',\
         'AD', 'KD', 'QD', 'JD', '10D', '9D', '8D', '7D', '6D', '5D', '4D', '3D', '2D',\
         'AC', 'KC', 'QC', 'JC', '10C', '9C', '8C', '7C', '6C', '5C', '4C', '3C', '2C',\
         'AH', 'KH', 'QH', 'JH', '10H', '9H', '8H', '7H', '6H', '5H', '4H', '3H', '2H']

used = []
p1 = []
p2 = []
a = 0

while (a < 2):
    drawn_card = random.choice(deck)
    deck.append(drawn_card)
    deck = [f for f in deck if f not in used]
    p1.append(drawn_card)
    a+=1
python
2个回答
1
投票

那么随机选择,不能保证当你这样做是唯一的,因此:

drawn_card = random.choice(deck)
..
p1.append(drawn_card)

你最终可能有重复(即说明了在一段时间看到重复的,有些不是)。

检查drawn_card是在列表中第一个,如果没有,则追加。这样,你会不会有重复。在代码中,你也可能是这样的:

if drawn_card not in p1:
    p1.append(drawn_card)

或者,正如罗里Daulton说:

如果你被允许,你可以洗牌,整个甲板上,然后从该列表中连续项。


0
投票

您需要将随机卡“P1”比较不“甲板”:

import random

deck = ['AS', 'KS', 'QS', 'JS', '10S', '9S', '8S', '7S', '6S', '5S', '4S', '3S', '2S',\
         'AD', 'KD', 'QD', 'JD', '10D', '9D', '8D', '7D', '6D', '5D', '4D', '3D', '2D',\
         'AC', 'KC', 'QC', 'JC', '10C', '9C', '8C', '7C', '6C', '5C', '4C', '3C', '2C',\
         'AH', 'KH', 'QH', 'JH', '10H', '9H', '8H', '7H', '6H', '5H', '4H', '3H', '2H']

used = []
p1 = []
a = 0

while (a < 2):
    drawn_card = random.choice(deck)
    print(drawn_card)
    if drawn_card not in p1:
        p1.append(drawn_card)
        a += 1
        continue
print (p1)
© www.soinside.com 2019 - 2024. All rights reserved.