首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统计100张两张牌交易中出现的21点牌数量

统计100张两张牌交易中出现的21点牌数量
EN

Stack Overflow用户
提问于 2015-09-23 08:00:38
回答 1查看 241关注 0票数 2

我需要计算一下在一双5副牌的鞋子中,在100张2牌交易中,二十一点出现的次数。到目前为止,我有这样的想法:

str() -转换为字符串

代码语言:javascript
复制
def str(draw):
    suits = {
        'S':'Spades',
        'H':'Hearts',
        'D':'Diamonds',
        'C':'Clubs'
        }
    cards = [
        'Ace', '2', '3', '4', '5',
        '6', '7', '8', '9', '10',
        'Jack', 'Queen', 'King'
        ]
    # create the human-readable string for the given card
    str = '{} of {}'.format(cards[draw[0]], suits[draw[1]])
    return str

convert() -将一个整数(0-259;即5副牌)转换为卡片

代码语言:javascript
复制
#             Return list with card (0-12) and suit (S, H, D, C)
def convert(x):
    if x >= 0 and x <= 51:
        card = x%13
        suit = 'SHDC'[x/13]
        return card, suit, str([card,suit])
    elif x >= 52 and x <= 103:
        x = x - 52
        card = x%13
        suit = 'SHDC'[x/13]
        return card, suit, str([card,suit])
    elif x >= 104 and x <= 155:
        x = x - 104
        card = x%13
        suit = 'SHDC'[x/13]
        return card, suit, str([card,suit])
    elif x >= 156 and x <= 207:
        x = x - 156
        card = x%13
        suit = 'SHDC'[x/13]
        return card, suit, str([card,suit])
    elif x >= 208 and x <= 259:
        x = x - 208
        card = x%13
        suit = 'SHDC'[x/13]
        return card, suit, str([card,suit])

draw_n() -从一副牌中抽出n张牌而不替换

代码语言:javascript
复制
def draw_n(n):
    from random import sample
    cards = []
    # Make sure a valid number is entered
     if n >0 and n <= 260:
        # Sample without replacement
        for x in sample(xrange(0,260),n):
            # Append converted card to list 'cards'
            cards.append(convert(x))
    return cards

Score1(手牌)-计算2张手牌中第一张牌的分数

代码语言:javascript
复制
def score1(hand):
    if hand[0][0] == 0:
        val1 = 11
        return val1
    elif hand[0][0] == 1:
        val1 = 2
        return val1
    elif hand[0][0] == 2:
        val1 = 3
    return val1
elif hand[0][0] == 3:
    val1 = 4
    return val1
elif hand[0][0] == 4:
    val1 = 5
    return val1
elif hand[0][0] == 5:
    val1 = 6
    return val1
elif hand[0][0] == 6:
    val1 = 7
    return val1
elif hand[0][0] == 7:
    val1 = 8
    return val1
elif hand[0][0] == 8:
    val1 = 9
    return val1
elif hand[0][0] == 9 or hand[0][0] == 10 or hand[0][0] == 11 or hand[0][0] == 12:
    val1 = 10
    return val1

Score2(手牌)-计算2张牌手中第二张牌的分数

代码语言:javascript
复制
def score2(hand):
    if hand[1][0] == 0:
        val2 = 11
        return val2
    elif hand[1][0] == 1:
        val2 = 2
        return val2
    elif hand[1][0] == 2:
        val2 = 3
        return val2
    elif hand[1][0] == 3:
        val2 = 4
        return val2
    elif hand[1][0] == 4:
        val2 = 5
        return val2
    elif hand[1][0] == 5:
        val2 = 6
        return val2
    elif hand[1][0] == 6:
        val2 = 7
        return val2
    elif hand[1][0] == 7:
        val2 = 8
        return val2
    elif hand[1][0] == 8:
        val2 = 9
        return val2
    elif hand[1][0] == 9 or hand[1][0] == 10 or hand[1][0] == 11 or hand[1][0] == 12:
        val2 = 10
        return val2

我希望能够画出10只手:

代码语言:javascript
复制
hands = [draw_n(2) for i in range(100)]

在此之后,统计21点发生的次数的最有效方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-09-23 08:21:27

代码语言:javascript
复制
hand_total = [sum(x) for x in hands]
hand_total.count(21)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32728951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档