Александър обнови решението на 15.11.2022 17:44 (преди почти 3 години)
+import random
Моля оставяй по два празни реда м/у елементите на top level - в конретния случай - класовете и импортите.
+class Card:
+    def __init__(self, suit, face):
+        self._suit = suit
+        self._face = face
+    def get_suit(self):
+        return self._suit
+    def get_face(self):
+        return self._face
+class Deck:
+    def __init__(self, face_filter = []):
При дефиниране на стойност по подразбиране не се слагат интервали около равното.
+        self._face_filter = face_filter
+        self._all_faces = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
След запетая винаги се слага интервал.
+        self._all_suits = ['clubs','diamonds','hearts','spades']
+        self._current_deck = []
+
+        if len(self._face_filter) == 0:
+            for suit in self._all_suits:
+                for face in self._all_faces:
+                    self._current_deck.append(Card(suit, face))
+        else:
+            for suit in self._all_suits:
+                for face in self._face_filter:
+                    self._current_deck.append(Card(suit, face))
+
+
+    def cut(self):
+        rand = random.randint(0, len(self._current_deck)-1)
+        self._current_deck = self._current_deck[rand:] + self._current_deck[:rand]
+
+    def shuffle(self):
+        return random.shuffle(self._current_deck)
+
+    def get_cards(self):
+        return self._current_deck
+
+class Player:
+    def __init__(self, hand = []):
+        self.hand = hand
+
+    def get_cards(self):
+        return self.hand
+
+class Game:
+    def __init__(self, number_of_players, dealing_direction, dealing_instructions):
+        self._number_of_players = number_of_players
+        self._dealing_direction = dealing_direction
+        self._dealing_instructions = dealing_instructions
+        self._deck = Deck()
+        self._players = []
+        for i in range(number_of_players):
Ако променливата не ти трябва, именувай я _, както е по конвенция.
+            self._players.append(Player())
+    def get_players(self):
+        return self._players
+
+    def prepare_deck(self): #ne bachka
+        for pl in self._players:
+            for card in pl.hand:
+                self._deck._current_deck.append(pl.hand.pop())
+        self._deck.shuffle()
+        self._deck.cut()
+
+    def deal(self, pl):
+        ind = self._players.index(pl)
+        self._players = self._players[ind:] + self._players[:ind]
+        if self._dealing_direction == 'rtl':
+            top_index = self._players.pop(0)
+            self._players.reverse()
+            self._players.insert(0, top_index) 
+
+        for deal_cards in self._dealing_instructions:
+            br = 0
br не е добро име на променлива. Сигурно идва от break, но е неясно. Предполагам, че ако напишеш for ще си спестиш тази променлива като цяло. просто трябва да си подредиш списъка по правилния начин с малко слайсване и сие.
+            while br < len(self._players):
+                for i in range(deal_cards):
+                    self._players[br].hand.append(self._deck._current_deck.pop(0))
+                br = br+1
+                
+    def get_deck(self):
+        return self._deck
+
+class Belot(Game):
+    def __init__(self):
+        super().__init__(4, "ltr", (2, 3, 3))
+        self._deck = Deck(["7", "8", "9", "10", "J", "Q", "K", "A"])
+class Poker(Game):
+    def __init__(self):super().__init__(9, "rtl", (1, 1, 1, 1, 1))

Моля оставяй по два празни реда м/у елементите на
top level- в конретния случай - класовете и импортите.При дефиниране на стойност по подразбиране не се слагат интервали около равното.
След запетая винаги се слага интервал.
Ако променливата не ти трябва, именувай я
_, както е по конвенция.brне е добро име на променлива. Сигурно идва отbreak, но е неясно. Предполагам, че ако напишешforще си спестиш тази променлива като цяло. просто трябва да си подредиш списъка по правилния начин с малко слайсване и сие.