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', '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

最佳答案

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

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

您最终可能会遇到重复项(这说明您有时会看到重复项,有时则不会)。

首先检查drawn_card是否在列表中,如果没有,则追加。这样你就不会出现重复的情况。在代码中你可以这样:

if drawn_card not in p1:
    p1.append(drawn_card)
<小时/>

或者,正如 Rory Daulton 所说:

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

关于python - 将项目从列表移动到扑克牌游戏 Python 的另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38028932/

相关文章:

python - 计算时间差(以分钟为单位)

python - Django 1.8 忽略 DIRS,找不到模板

python - 使用 Dash 将工具提示添加到 Bootstrap Table 中的单元格

python - 有没有办法在不使用两个 for 循环的情况下解决这个问题

python - 在 Xcode 中运行 iOS 项目之前运行 python HttpServer

Python,Popen 和 select - 等待进程终止或超时

python - BeautifulSoup 为什么不抓取整个网页?

python - 从 Tumblr API 打印 20 多个帖子

python - 使用正则表达式取消标记不会捕获嵌套标签

python - 如何将装饰器应用于 Cython cpdef 函数