card–A basic playing card

A simple API for creating and using playing cards

We will be using numbers to represent playing card clubs and ranks. These are the suits:

suits
['♣️', '♦️', '❤️', '♠️']

For instance the suit at index 0:

suits[0]
'♣️'

These are the ranks:

ranks
[None, 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']

For instance the rank at index 1 (note that there isn’t a playing card at position 0, since we want the ranks to match the indicies where possible):

ranks[1]
'A'

source

Card


def Card(
    suit:int, # An index into `suits`
    rank:int, # An index into `ranks`
):

A playing card

Here’s an example of creating and displaying a card:

c = Card(suit=1, rank=3)
c
3♦️

Comparison operators

Equality, less than, and greater than work on the rank and suit indices.


source

Card.__gt__


def __gt__(
    a:Card
):

Return self>value.


source

Card.__lt__


def __lt__(
    a:Card
):

Return self<value.


source

Card.__eq__


def __eq__(
    a:Card
):

Return self==value.

For instance, here’s a test of equality…

test_eq(Card(suit=1, rank=3), Card(suit=1, rank=3))

…and a test of <

assert Card(suit=1, rank=3)<Card(suit=2, rank=3)

…and finally of >:

assert Card(suit=3, rank=3)>Card(suit=2, rank=3)
assert not Card(suit=1, rank=3)>Card(suit=2, rank=3)