input: Write a python function to deal a hand of cards to a player and a dealer and determine the winner based on points.
  assert determine_winner(["ace of spades", "3 of diamonds"], ["king of clubs", "2 of hearts"]) == "Player wins!"
  assert determine_winner(["queen of hearts", "4 of spades"], ["jack of diamonds", "5 of clubs"]) == "Dealer wins!"
  assert determine_winner(["7 of hearts", "8 of diamonds"], ["5 of spades", "10 of clubs"]) == "Draw!"
output: def determine_winner(player_hand, dealer_hand):
      card_values = {
          "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "10": 10,
          "jack": 10, "queen": 10, "king": 10, "ace": 11
      }
  
      def calculate_points(hand):
          total_points = 0
          aces = 0
          for card in hand:
              value = card.split()[0]
              total_points += card_values[value]
              if value == "ace":
                  aces += 1
          while total_points > 21 and aces:
              total_points -= 10
              aces -= 1
          return total_points
  
      player_points = calculate_points(player_hand)
      dealer_points = calculate_points(dealer_hand)
  
      if player_points > 21:
          return "Dealer wins!"
      if dealer_points > 21:
          return "Player wins!"
      if player_points > dealer_points:
          return "Player wins!"
      if dealer_points > player_points:
          return "Dealer wins!"
      return "Draw!"