在 Python 中为扑克牌添加价值
Posted
技术标签:
【中文标题】在 Python 中为扑克牌添加价值【英文标题】:Adding Values to playing cards in Python 【发布时间】:2017-08-27 18:00:57 【问题描述】:所以我正在尝试将值添加到卡片中,以便计算每个玩家的得分。 我希望评分系统像这样工作:2 的值为 2 计数到 ace 的值为 14,ace 最高 2 最低。每套花色都有另一个价值,黑桃 = 1,红心 = 2,方块 = 3,梅花 = 2。我想在我知道如何将值添加到每张牌和花色之后,我可以自己做得分部分,但我不知道如何添加值所以有人可以给我一些想法或提示吗?
请不要直接回答代码,因为我喜欢了解它是如何完成的,而不仅仅是复制粘贴您的代码。
套牌代码是
CardList= ["2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"]
SuitList= ["Diamonds", "Clubs", "hearts", "Spades"]
Deck= ["%s of %s" %(X, Y) for X in ValueList for Y in SuitList]
【问题讨论】:
这个边界太宽泛了。有许多可能的方法,这个站点通常不是作为教程服务的。您希望来到这里能够就您拥有的某些实现提出具体问题。您能否详细介绍一下您尝试过的方法、分享您的代码以及它是如何不起作用的? 你真的应该考虑使用class
。
【参考方案1】:
我将你的套牌和套装列表更改为dictionary
,这样我就可以将价值与卡片和套装联系起来。很简单,心值 2 分,所以"Hearts":2
。然后我使用.items()
函数从西装列表中获取所有项目的keys, values
,我将值存储为v
。然后,我使用enumerate
循环遍历CardList
,因此我可以获得变量i
(它是数组中卡片的索引)和卡片名称X
。然后我添加了 2,因为数组从 0 开始计数。最后,我实现了pprint
,以使我的输出看起来更清晰,您可以在最终版本中删除它。
import pprint
CardList= ["2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"]
SuitList= "Spades":1, "Hearts":2, "Diamonds":3, "Clubs":2
Deck = [["%s of %s" % (X, Y), i + 2 + v] for i, X in enumerate(CardList) for Y, v in SuitList.items()]
pprint.PrettyPrinter(indent=4).pprint(Deck)
输出:
[ ['2 of Hearts', 4],
['2 of Clubs', 4],
['2 of Spades', 3],
['2 of Diamonds', 5],
['3 of Hearts', 5],
['3 of Clubs', 5],
['3 of Spades', 4],
['3 of Diamonds', 6],
['4 of Hearts', 6],
['4 of Clubs', 6],
['4 of Spades', 5],
['4 of Diamonds', 7],
['5 of Hearts', 7],
['5 of Clubs', 7],
['5 of Spades', 6],
['5 of Diamonds', 8],
['6 of Hearts', 8],
['6 of Clubs', 8],
['6 of Spades', 7],
['6 of Diamonds', 9],
['7 of Hearts', 9],
['7 of Clubs', 9],
['7 of Spades', 8],
['7 of Diamonds', 10],
['8 of Hearts', 10],
['8 of Clubs', 10],
['8 of Spades', 9],
['8 of Diamonds', 11],
['9 of Hearts', 11],
['9 of Clubs', 11],
['9 of Spades', 10],
['9 of Diamonds', 12],
['10 of Hearts', 12],
['10 of Clubs', 12],
['10 of Spades', 11],
['10 of Diamonds', 13],
['Jack of Hearts', 13],
['Jack of Clubs', 13],
['Jack of Spades', 12],
['Jack of Diamonds', 14],
['Queen of Hearts', 14],
['Queen of Clubs', 14],
['Queen of Spades', 13],
['Queen of Diamonds', 15],
['King of Hearts', 15],
['King of Clubs', 15],
['King of Spades', 14],
['King of Diamonds', 16],
['Ace of Hearts', 16],
['Ace of Clubs', 16],
['Ace of Spades', 15],
['Ace of Diamonds', 17]]
【讨论】:
这帮助我添加了值,谢谢 :) 但现在我已经将该代码实现到我的 def Generatedeck() 中:它不会让我稍后在我的 shufflecards 函数 def ShuffleCards() 中随机播放: shuf = random.shuffle(DL) return shuf 更新了代码,现在使用二维列表。这意味着您可以洗牌,然后通过 [0] 访问卡片名称和 [1] 访问卡片价值。如果您可以将此答案标记为解决方案,那将有很大帮助。以上是关于在 Python 中为扑克牌添加价值的主要内容,如果未能解决你的问题,请参考以下文章