创建一个函数,该函数生成一个等级高于基普的所有牌的列表?

2024-06-26 02:10:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须创建一个函数,在你的排名更高,消耗一张卡,基辅卡,并产生一个名单,所有的卡的排名高于基辅卡,按排名的增加顺序排序。卡片的排名如下:

  • 就西装而言,球杆比钻石低,钻石比红桃低,红桃比黑桃低,不管价值多少。在
  • 如果两张牌的花色相同,价值越大的牌排名越高。在

例如:

 higher_in_rank(card('spades', 8)) => [card('spades', 9), card('spades', 10)] 
 higher_in_rank(card('diamonds', 6)) =>
    [card('diamonds',7), card('diamonds', 8), ..., card('hearts',1),
    ..., card('hearts',10), card('spades', 1), ..., card('spades', 10)]

我不知道从何说起。我有以下内容:

^{pr2}$

我不知道如何创建代码。在


Tags: 函数in顺序card价值rank名单消耗
2条回答

我会建立一个所有卡片的排序列表,然后你可以通过查找给定卡片的索引并返回列表中的所有卡片来快速获得高于给定卡片的所有卡片。例如:

class card:
    'Fields: suit, value'
    def __init__(self, suit, value):
        self.suit = suit
        self.value = value
    def __repr__(self):
        return '{suit} {value}'.format(suit=self.suit,value=self.value)
    def __eq__(self, other):
        return (isinstance(other, self.__class__) and 
                self.suit == other.suit and self.value == other.value)

all_cards = [card(s, v) 
             for s in ('clubs', 'diamonds', 'hearts', 'spades')
                 for v in range(1, 11)]

def higher_in_rank(base_card):
    return all_cards[all_cards.index(base_card)+1:]

示例:

^{pr2}$

我会根据卡片的数字等级来识别卡片,并从中得出套装和价值:

class Card(object):
    suits = ('clubs', 'diamonds', 'hearts', 'spades')
    values = ('2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A')
    def __init__(self, rank):
        self.rank = rank
    def get_suit(self):
        return Card.suits[self.rank // 13]
    def get_value(self):
        return Card.values[self.rank % 13]
    def __str__(self):
        return '{suit} {value}'.format(suit=self.get_suit(),value=self.get_value())

def higher_in_rank(base_card):
    for rank in range(base_card.rank, 52):
        yield Card(rank)

base_card = Card(0 * 13 + 5)
for card in higher_in_rank(base_card):
    print card

相关问题 更多 >