import random
card_categories = ['Hearts', 'Diamonds', 'Clubs', 'Spades']
cards_list = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
deck = [(card, category) for category in card_categories for card in cards_list]
def card_value(card):
if card[0] in ['Jack', 'Queen', 'King']:
return 10
elif card[0] == 'Ace':
return 11
else:
return int(card[0])
random.shuffle(deck)
player_card = [deck.pop(), deck.pop()]
dealer_card = [deck.pop(), deck.pop()]
while True:
player_score = sum(card_value(card) for card in player_card)
dealer_score = sum(card_value(card) for card in dealer_card)
print("Cards Player Has:", player_card)
print("Score Of The Player:", player_score)
print("Dealer's Visible Card:", dealer_card[0])
print("\n")
choice = input('What do you want? ["play" to request another card, "stop" to stop]: ').lower()
if choice == "play":
new_card = deck.pop()
player_card.append(new_card)
elif choice == "stop":
break
else:
print("Invalid choice. Please try again.")
continue
if player_score > 21:
print("Cards Dealer Has:", dealer_card)
print("Score Of The Dealer:", dealer_score)
print("Cards Player Has:", player_card)
print("Score Of The Player:", player_score)
print("Dealer wins (Player Loss Because Player Score is exceeding 21)")
break
while dealer_score < 17:
new_card = deck.pop()
dealer_card.append(new_card)
dealer_score += card_value(new_card)
print("Dealer reveals cards:", dealer_card)
print("Dealer's Score:", dealer_score)
print("\n")
if dealer_score > 21:
print("Player wins (Dealer Loss Because Dealer Score is exceeding 21)")
elif player_score > dealer_score:
print("Player wins (Player Has Higher Score than Dealer)")
elif dealer_score > player_score:
print("Dealer wins (Dealer Has Higher Score than Player)")
else:
print("It's a tie.")
print("Final Cards - Player:", player_card, "Score:", player_score)
print("Final Cards - Dealer:", dealer_card, "Score:", dealer_score)
----------------
Input for the program ( Optional )
Output:
Cards Player Has: [('4', 'Diamonds'), ('8', 'Clubs')]
Score Of The Player: 12
Dealer's Visible Card: ('9', 'Hearts')
What do you want? ["play" to request another card, "stop" to stop]:
---------------
STDIN
Input for the program ( Optional )
Output:
Cards Player Has: [('3', 'Hearts'), ('7', 'Diamonds')]
Score Of The Player: 10
Dealer's Visible Card: ('8', 'Spades')
What do you want? ["play" to request another card, "stop" to stop]: stop
Dealer reveals cards: [('8', 'Spades'), ('Ace', 'Spades')]
Dealer's Score: 19
Dealer wins (Dealer Has Higher Score than Player)
Final Cards - Player: [('3', 'Hearts'), ('7', 'Diamonds')] Score: 10
Final Cards - Dealer: [('8', 'Spades'), ('Ace', 'Spades')] Score: 19