题目描述




代码实现
import random
def get_card():
card_value = random.randint(1, 13)
if card_value == 1:
return 1, "ACE"
elif card_value >= 11:
return 10, ["JACK", "QUEEN", "KING"][card_value - 11]
else:
return card_value, str(card_value)
def get_hand_value(hand):
hand_value = sum(card[0] for card in hand)
for card in hand:
if card[0] == 1 and hand_value <= 11:
hand_value += 10
return hand_value
def print_hand(hand, dealer=False):
if dealer:
print(f"Dealer's hand: {hand[1][1]}")
else:
cards = ", ".join([f"{card[1]} ({card[0]})" for card in hand])
print(f"Your hand: {cards} ({get_hand_value(hand)})")
def print_stats(player_wins, dealer_wins, ties, game_number):
pass
def play_game():
game_number = 1
player_wins = 0
dealer_wins = 0
ties = 0
while True:
print(f"\nSTART GAME #{game_number}")
game_number += 1
player_hand = [get_card()]
print(f"Your card is a {player_hand[0][1]} ({player_hand[0][0]})")
while get_hand_value(player_hand) < 21:
print_hand(player_hand)
print("\nWhat would you like to do?")
print("1. Get another card")
print("2. Hold hand")
print("3. Print statistics")
print("4. Exit")
choice = int(input("Enter choice: "))
if choice == 1:
player_hand.append(get_card())
if get_hand_value(player_hand) > 21:
print("You exceeded 21! You lose.")
dealer_wins += 1
break
elif get_hand_value(player_hand) == 21:
print("BLACKJACK! You win!")
player_wins += 1
break
elif choice == 2:
break
elif choice == 3:
print_stats(player_wins, dealer_wins, ties, game_number)
elif choice == 4:
return
dealer_hand = 0
if get_hand_value(player_hand) <= 21:
dealer_hand = get_hand_value([random.randint(1, 11) for i in range(2)])
if dealer_hand > 21:
print("Dealer exceeded 21! You win!")
player_wins += 1
elif dealer_hand == get_hand_value(player_hand):
print("It's a tie! No one wins!")
ties += 1
else:
print("Dealer wins!")
dealer_wins += 1
print_hand(player_hand)
print_hand(dealer_hand)
if __name__ == '__main__':
play_game()