您可以使用自定义类:
class Card(object):
# fancier output
s = {0:"hearts", 1:"diamonds", 2:"clubs", 3:"spades"}
r = {i:v for i,v in enumerate( [ "Ace","2","3","4","5","6","7","8",
"9","10","Jack","Queen","King"],1)}
def __init__(self, suit,rank):
self.suit = suit
self.rank = rank
def __str__(self):
return "{} of {}".format(Card.r[self.rank],Card.s[self.suit])
def __repr__(self):
return str(self)
def __lt__(self,other):
return (self.suit,self.rank) < (other.suit, other.rank)
@classmethod
def summ_hand(cls,hand):
return sum ( 10 if card.rank > 10 else card.rank for card in hand)
class Deck(object):
def __init__(self):
self.cards = [Card(suit,rank) for suit in range(4) for rank in range(1,14)]
deck = Deck()
print( deck.cards )
输出:
[Ace of hearts, 2 of hearts, 3 of hearts, 4 of hearts, 5 of hearts, 6 of hearts,
7 of hearts, 8 of hearts, 9 of hearts, 10 of hearts, Jack of hearts, Queen of hearts,
King of hearts,
Ace of diamonds, 2 of diamonds, 3 of diamonds,4 of diamonds,5 of diamonds, 6 of diamonds,
7 of diamonds, 8 of diamonds, 9 of diamonds, 10 of diamonds, Jack of diamonds,
Queen of diamonds, King of diamonds,
Ace of clubs, 2 of clubs, 3 of clubs, 4 of clubs, 5 of clubs, 6 of clubs, 7 of clubs,
8 of clubs, 9 of clubs, 10 of clubs, Jack of clubs, Queen of clubs, King of clubs,
Ace of spades, 2 of spades, 3 of spades, 4 of spades, 5 of spades, 6 of spades,
7 of spades, 8 of spades, 9 of spades, 10 of spades, Jack of spades, Queen of spades,
King of spades]
提供
__lq__(self)
允许您排序:
hand = random.choices(deck.cards, k=7)
print(hand)
print(sorted(hand))
print( Card.summ_hand([Card(0,9),Card(0,11),Card(0,13)]))
输出:
# as given by choices
[Ace of hearts, Ace of spades, Queen of diamonds, 9 of spades,
King of hearts, Ace of spades, 3 of diamonds]
# sorted
[Ace of hearts, King of hearts, 3 of diamonds, Queen of diamonds,
Ace of spades, Ace of spades, 9 of spades]
29 # summ_hand for 9,Queen,King,