我一直在用Python制作一个简单的Blackjack游戏,我已经找到了一种方法,可以从列表中随机选择一张牌,然后搜索不同的字母和数字。这会将每张卡的得分相加,这样用户就不必自己动手了。这看起来像这样:
card1 = random.choice (all_possible)
all_possible.remove(card1)
add_face = set('JQK')
for faces in card1:
if add_face & set(faces):
user_cards +=10
这就是我在谷歌上搜索到的简单部分。我为每个数字2-10写出了相同的东西,这会将相应的数字添加到总分中。我的问题是如何在一个集合中搜索所有2-10,并将找到的数字相加。
我试着开始工作的一个例子是:
card1 = random.choice (all_possible)
all_possible.remove(card1)
add_face = set('23456789')
for faces in card1:
if add_face & set(faces):
user_cards += ???????
问题是我不知道如何结束代码,以便它添加它找到的适当数字。
发布于 2015-07-28 19:28:54
由于从2到10的卡片的分数只是它们的值,您可以尝试将卡片的值转换为整数并将其添加到分数中。对于面卡,您可以使用字典,例如将Q
映射到10
。您也可以结合使用这两种方法:
values = {'J': 10, 'Q': 10, 'K': 10, 'A': 1} # score per value
hand = ["SA", "H10", "DK", "C8"] # all the cards in a hand
score = 0 # running score
for card in hand:
suit, value = card[0], card[1:] # separate suit and value
try:
score += int(value) # handes cases 2 - 10
except ValueError:
score += values[value] # cases J, Q, K, A
但是,请注意,根据Blackjack规则,根据情况,王牌可以得1分或11分,因此您可能需要单独处理王牌。
发布于 2015-07-28 19:43:11
对于这个问题,我很抱歉。这比我想象的要容易得多。感谢你的回答,因为他们帮助我重做了我的代码,但我找到了一个更简单的解决方案,这正是我之前使用的,但稍微调整了一下:
card1 = random.choice (all_possible)
all_possible.remove(card1)
add_face = set('23456789')
for faces in card1:
if add_face & set(faces):
user_cards = float(user_cards) + float(faces)
正如你在上面看到的,'faces‘变量存储了找到的数字,所以如果我把它加到最后,它就会起作用。我已经测试过了,它可以工作,但是如果你认为我错了,请告诉我,因为我还在学习用Python编写代码,我想学习更多。
再次感谢您的帮助!!
https://stackoverflow.com/questions/31673318
复制相似问题