好吧,我试着用Python做一个扑克游戏。。我想把用过的卡从列表移到另一个列表中,在那里我将存储用过的卡。我用的是这个代码:
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
# Don't read anything below this line
card1 = p1[0]
card2 = p1[1]
f_card1 = "Name/Suit"
f_card2 = "Name/Suit"
# Formatting Player1's first drawn card
if card1[0] == "A":
f_card1 = "Ace"
elif card1[0] == "K":
f_card1 = "King"
elif card1[0] == "Q":
f_card1 = "Queen"
elif card1[0] == "J":
f_card1 = "Jack"
else:
f_card1 = card1[0]
if card1[1] == "S":
f_card1 = f_card1 + " of Spades"
elif card1[1] == "D":
f_card1 = f_card1 + " of Diamonds"
elif card1[1] == "C":
f_card1 = f_card1 + " of Clubs"
else:
f_card1 = f_card1 + " of Hearts"
# Formatting Player1's second drawn card
if card2[0] == "A":
f_card2 = "Ace"
elif card2[0] == "K":
f_card2 = "King"
elif card2[0] == "Q":
f_card2 = "Queen"
elif card2[0] == "J":
f_card2 = "Jack"
else:
f_card2 = card2[0]
if card2[1] == "S":
f_card2 = f_card2 + " of Spades"
elif card2[1] == "D":
f_card2 = f_card2 + " of Diamonds"
elif card2[1] == "C":
f_card2 = f_card2 + " of Clubs"
else:
f_card2 = f_card2 + " of Hearts"
print(f_card1)
print(f_card2)
while函数是我的问题所在。有时我打印卡片时也能得到同样的卡片。我该怎么解决?我的错误在哪里?提前谢谢
您只需将绘制的卡片附加到
^{1}$used
列表中,而不是返回到deck
:已使用。追加(抽卡)
简单的解决方法是按照其他人的建议使用
^{1}$used.append(drawn_card)
。 更好的方法是随机洗牌,然后从中切出所需数量的牌:不过,你可能是在同一副牌上处理多手牌。你可以通过在无序牌堆中跟踪偏移量来处理这个问题,然后从那里进行切片,但这很麻烦。或者你可以复制一张
^{pr2}$deck
,洗牌,然后为每只牌弹出所需数量的牌:可能最干净的方法是使用^{} 从迭代器中获取第一个n项:
相关问题 更多 >
编程相关推荐