Python 将项目从列表移动到另一个列表,用于扑克牌游戏

Python 将项目从列表移动到另一个列表,用于扑克牌游戏,python,Python,我正在尝试用Python制作扑克游戏。在while功能中,我想将使用过的卡移动到一个单独的(使用过的卡)列表中。问题是,有时我在打印手的时候,会得到副本。我的分类策略出了问题,我不知道是什么。你能帮我吗 import random deck = ['AS', 'KS', 'QS', 'JS', '10S', '9S', '8S', '7S', '6S', '5S', '4S', '3S', '2S',\ 'AD', 'KD', 'QD', 'JD', '10D', '9D',

我正在尝试用Python制作扑克游戏。在while功能中,我想将使用过的卡移动到一个单独的(使用过的卡)列表中。问题是,有时我在打印手的时候,会得到副本。我的分类策略出了问题,我不知道是什么。你能帮我吗

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
随机导入
甲板=['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’\
‘啊’、‘KH’、‘QH’、‘JH’、‘10H’、‘9H’、‘8H’、‘7H’、‘6H’、‘5H’、‘4H’、‘3H’、‘2H’]
已用=[]
p1=[]
p2=[]
a=0
而(a<2):
抽牌=随机选择(牌组)
卡片组。附加(抽卡)
甲板=[f表示甲板中的f,如果f未使用]
p1.追加(提款卡)
a+=1

随机选择不保证是唯一的,因此当您这样做时:

drawn_card = random.choice(deck)
..
p1.append(drawn_card)
您可能最终会有重复项(这说明您有时会看到重复项,而有些则不会)

首先检查
drawing\u card
是否在列表中,如果不是,则追加。这样你就不会有重复的。在代码中,您可以如下所示:

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

或者,正如罗里·道尔顿所说:


如果允许,您可以洗牌整个牌组,然后从列表中删除连续的项目。

您需要将随机牌与“p1”牌组进行比较,而不是与“牌组”进行比较:

随机导入
甲板=['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’\
‘啊’、‘KH’、‘QH’、‘JH’、‘10H’、‘9H’、‘8H’、‘7H’、‘6H’、‘5H’、‘4H’、‘3H’、‘2H’]
已用=[]
p1=[]
a=0
而(a<2):
抽牌=随机选择(牌组)
打印(抽卡)
如果未在p1中绘制U卡:
p1.追加(提款卡)
a+=1
持续
打印(p1)

@gsamaras很棒!!这解决了我的问题:)是的,这样更好,尽管你不需要包括我的名字。不管怎样,你得到了我的支持票。
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)