Question: import random ranks = ( ' A ' , ' 2 ' , ' 3 ' , ' 4 ' , ' 5 ' ,

import random
ranks =('A','2','3','4','5','6','7','8','9','10','J','Q','K')
suits =('Hearts', 'Diamonds', 'Spades', 'Clubs')
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.cards =[Card(suit, rank) for suit in suits for rank in ranks]
def remove_kings(self):
self.cards =[card for card in self.cards if not (card.rank =="K" and card.suit in ["Hearts", "Diamonds", "Clubs"])]
def shuffle(self):
random.shuffle(self.cards)
def draw(self):
if self.cards:
return self.cards.pop()
else:
return "Deck is empty!"
def deal(self, num_players=4):
players_hands ={f"Player {i+1}": [] for i in range(num_players)}
player_count = len(players_hands)
for i in range(len(self.cards)):
player = f"Player {(i % player_count)+1}"
players_hands[player].append(self.cards[i])
return players_hands
def group_by_rank(self, hand):
rank_groups ={}
for card in hand:
rank = card.rank
if rank in rank_groups:
rank_groups[rank].append(card)
else:
rank_groups[rank]=[card]
return rank_groups
def remove_matched_cards(self, players_hands):
for player, hand in players_hands.items():
rank_groups = self.group_by_rank(hand)
for rank, cards in rank_groups.items():
if len(cards)>1:
if len(cards)==2:
for card in cards:
hand.remove(card)
elif len(cards)==3:
for i in range(2):
hand.remove(cards[i])
return players_hands
deck = Deck()
deck.remove_kings()
deck.shuffle()
players_hands = deck.deal(num_players=4)
for player, hand in players_hands.items():
print(f"{player}'s hand: ")
for card in hand:
print(card)
print()
players_hands = deck.remove_matched_cards(players_hands)
print("
After removing matched cards:
")
for player, hand in players_hands.items():
print(f"{player}'s updated hand: ")
for card in hand:
print(card)
print()

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!