import random as rnd

def minimum(aList):
    smallest=aList[0]
    for number in aList:
        if number < smallest:
            smallest = number

    return smallest


class Card():

    suits=["","Hearts","Spades","Clubs","Diamonds"]
    ranks=[0,"ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"]

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

    def getRank(self):
        return self.rank

    def getSuit(self):
        return self.suit

##    def __str__(self):
##        return "("+str(self.rank)+", "+str(self.suit)+")"

    def __str__ (self):
        return Card.ranks[self.rank]+" of "+Card.suits[self.suit]
        

class Deck():

    def __init__ (self):
        self.deck=[]
        for rank in range(1,14):
            for suit in range(1,5):
                card= Card(rank,suit)
                self.deck.append(card)

    def printDeck(self):
        for card in self.deck:
            print(card)

    def shuffle(self):
        numOfCards=len(self.deck)
        for index in range(numOfCards):
            temp=self.deck[index]
            swapPosition=rnd.randrange(numOfCards)
            self.deck[index]=self.deck[swapPosition]
            self.deck[swapPosition]=temp
        
    def drawCard(self):
        if len(self.deck)>0:
            return self.deck.pop(0)