Python 创建一个函数,生成所有等级高于基本卡的卡的列表?

Python 创建一个函数,生成所有等级高于基本卡的卡的列表?,python,Python,我必须创建一个更高等级的函数,它消耗一张卡,基本等级卡,并生成一个等级高于基本等级卡的所有卡的列表,按等级的递增顺序排序。卡片的排名如下: 就西服而言,无论价值多少,梅花都比钻石低,比红桃低,比黑桃低 如果两张牌的花色相同,则值越大的牌的等级越高 例如: higher_in_rank(card('spades', 8)) => [card('spades', 9), card('spades', 10)] higher_in_rank(card('diamonds', 6)) =

我必须创建一个更高等级的函数,它消耗一张卡,基本等级卡,并生成一个等级高于基本等级卡的所有卡的列表,按等级的递增顺序排序。卡片的排名如下:

  • 就西服而言,无论价值多少,梅花都比钻石低,比红桃低,比黑桃低
  • 如果两张牌的花色相同,则值越大的牌的等级越高
例如:

 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)]
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:]
我甚至不知道从哪里开始。我有以下资料:

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)
  # A card is an object card(suit, value) where
  # * suit is one of 'clubs', 'spades', 'diamonds', 'hearts', and
  # * value is an integer in the range 1..10

def higher_in_rank(base_card):
    if base_card.suit == 'clubs':
        return     #clubs, diamonds, hearts, spades
    if base_card.suit == 'diamonds':
        return     #diamonds, hearts, spades
    if base_card.suit == 'hearts':
        return     #hearts, spades
    if base_card.suit == 'spades':
        return     #spades

我不知道如何为此创建代码。

我将使用卡片的数字等级识别卡片,并从中导出套装和价值:

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

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

 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)]
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:]
例如:

>>> higher_in_rank(card('spades', 8))
[spades 9, spades 10]
>>> higher_in_rank(card('diamonds', 6))
[diamonds 7, diamonds 8, diamonds 9, diamonds 10, hearts 1, hearts 2, hearts 3, hearts 4, hearts 5, hearts 6, hearts 7, hearts 8, hearts 9, hearts 10, spades 1, spades 2, spades 3, spades 4, spades 5, spades 6, spades 7, spades 8, spades 9, spades 10]