import random

suits = ('Hearts', 'Clubs', 'Spades', 'Diamonds')
ranks = ('Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Jack','Queen','King','Ace',)
values = {'Two':2,'Three':3,'Four':4,'Five':5,'Six':6,'Seven':7,'Eight':8,'Nine':9,'Ten':10,
          'Jack':10,'Queen':10,'King':10,'Ace':11}


class Card:
    def __init__(self, suit, rank):
        self.suit = suit
        self.rank = rank

    def __str__(self):
        return self.rank + ' of ' + self.suit


class Deck:
    def __init__(self):
        self.deck = []
        for suit in suits:
            for rank in ranks:
                self.deck.append(Card(suit, rank))

    def __str__(self):
        deck_str = ''
        for card in self.deck:
            deck_str += '\n' + card.__str__()
        return deck_str

    def shuffle(self):
        random.shuffle(self.deck)

    def deal_a_card(self):
        single_card=self.deck.pop()
        return single_card

if __name__ == '__main__':
    deck = Deck()
    deck.shuffle()
    