我正在尝试用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
答案 0 :(得分:1)
随机选择不能保证唯一,因此当你这样做时:
drawn_card = random.choice(deck)
..
p1.append(drawn_card)
你可能最终会有重复(这说明你有时会看到重复,有些则没有)。
首先检查列表中的drawn_card
是否,如果没有,则追加。这样你就不会有重复。在代码中你可以这样:
if drawn_card not in p1:
p1.append(drawn_card)
或者,正如Rory Daulton所说:
如果您被允许,您可以随机播放整个套牌,然后从该列表中删除连续的项目。
答案 1 :(得分:0)
您需要将随机卡片与“ p1”而不是“ deck”进行比较:
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)