I am making a python blackjack game. I have an error in this code which I can't figure out. In the end when I test out the hit function and print the hand, it does not show me the list. Instead, it says [<main.Card object at 0x02F9F5F0>].
Here is my code.
#Blackjack
import random
suits = ['Clubs', 'Spades', 'Diamonds', 'Hearts']
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}
game_on = True
class Card:
def __init__(self, suit, rank):
self.suit = suit
self.rank = rank
def __str__(self):
return(f'{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_comp = ''
for card in self.deck:
deck_comp += '\n ' + card.__str__()
return deck_comp
def shuffle(self):
random.shuffle(self.deck)
def deal(self):
single_card = self.deck.pop()
return single_card
class Hand:
def __init__(self):
self.cards = [] # start with an empty list as we did in the Deck class
self.value = 0 # start with zero value
self.aces = 0 # add an attribute to keep track of aces
def add_card(self, card):
self.cards.append(card)
self.value += values[card.rank]
if card.rank == 'Ace':
self.aces += 1 # add to self.aces
def adjust_for_ace(self):
while self.value > 21 and self.aces:
self.value -= 10
self.aces -= 1
class Chips:
def __init__(self):
self.total = 100
self.bet = 0
def win_bet(self):
self.chips += self.bet
def lose_bet(self):
self.chips -= self.bet
def go_for_bet(chips):
while True:
try:
chips.bet = int(input('Please enter a betting amount: '))
except TypeError:
print('Please enter an integer')
continue
else:
if chips.bet > chips.total:
print(f'You do not have enough chips to bet {chips.bet}')
else:
break
def hit(deck, hand):
hand.add_card(deck.deal())
hand.adjust_for_ace()
def hit_or_stand(deck, hand):
while True:
x = input('Would you like to hit or stand? Say \'h\' or \'s\'')
if x[0].lower() == 'h':
hit(deck, hand)
elif x[0].lower() == 's':
print('You stand.')
else:
print('Try again please')
continue
break
deck = Deck()
hand = Hand()
hit(deck, hand)
print(hand.cards)