#Deck
class Deck:
	# '''Definition of a card deck.'''

	def __init__(self,hasJoker=False):
		self.suits  = ['H','D','S','C']
		self.values = [str(x) for x in range(2,11)] #2-10 cards
		self.values.extend(['J','Q','K','A']) #Face cards
		#Assemble deck
		self.cards = [(v+s) for v in self.values for s in self.suits]
		#Add Joker cards (2) as 'W' if needed
		if(hasJoker):
			self.cards.extend(['W1','W2'])

#Deck
class Deck:
	'''Definition of a card deck.'''

	def __init__(self,hasJoker=False):
		self.suits  = ['H','D','S','C']
		self.values = [str(x) for x in range(2,10)] #2-9 cards
		self.values.extend(['T','J','Q','K','A']) #Face cards (including the 10s)
		#Assemble deck
		self.cards = [(v,s) for v in self.values for s in self.suits]
		#Add Joker cards (2) as 'WW' if needed
		if(hasJoker):
			self.cards.extend([('W','W'),('W','W')])

	#Draw a card from the deck and return a card
	def draw(self,fromTop=True):
		#Remove from the front/top of deck
		if fromTop:
			return self.cards.pop(0)
		#Remove from the back/bottom of deck
		else:
			return self.cards.pop()

Update Deck.py - Change the reference of '10' cards to 'T' for consistency. - Change cards reference to be tuples instead of strings. Example: 2 of spades is ('2','S') instead of '2S'. - Change Joker card reference to ('W','W') to represent a wild card (Jokers are indistinguishable from one another). - Add draw method that removes a card from the top (or bottom) of deck and returns that card drawn.