2017-04-03 91 views
0

所以我试图给扑克牌添加值,这样我就可以计算出每个玩家的分数。 我希望评分系统能够像这样工作:2的值为2,数值达到14,ACE的值是最高的2,最低的是2。每一套西装都有另一个价值,它是spades = 1,hearts = 2,diamonds = 3,club = 2。我认为我知道如何为每张牌和套装添加价值,我可以自己完成得分部分,但我不知道如何添加值,所以有人可以给我一些想法或提示?在Python中为扑克牌添加值

请不要直接向上提供代码答案,因为id喜欢学习如何完成它,而不仅仅是复制粘贴代码。

甲板代码

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] 
+0

这是边界过于宽泛。有很多可能的方法,而且这个网站通常不是一个教程服务。你想来这里能够问一些关于你的实现的具体问题。你可以扩展一些关于你尝试过的东西,分享你的代码,以及它如何工作吗? –

+0

你应该真的考虑使用'class'。 (): –

回答

0

我改变了你的甲板和suitlist到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]] 
+0

这帮助我添加值,谢谢:)但现在我已经实现了代码到我的def Generatedeck():它不让我洗牌后来在我的shufflecards功能 def ShuffleCards(): shuf = random。 shuffle(DL) return shuf – Badbeex

+0

更新了代码,它现在使用了一个2D列表。这意味着您可以随机播放,然后通过卡名称的[0]和卡值的[1]访问元素。如果你可以将这个答案标记为解决方案,这将有很大帮助。 – Neil