Гергана обнови решението на 14.11.2022 08:19 (преди около 2 години)
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
Тази дефиниия е подвеждаща. Реално с нея можеш да приемеш повече от един аргумент, а ти искаш само един - face_filter
. По-удачно е да хванеш само един, а ако искаш може да му дадеш стойност по подразбиране, за да бъде optional.
Според мен индекс [0] е грешно.
Ако не искаш да използваш променлива, имнувай я _
, както е по конвенция.
Тук с това +1
ще имаш проблем с гранични стойности.
randrange(20) дава число между 0 и 19 и ако index_to_cut ми е 19, когато обхождам само в range(index_to_cut) няма ли да спра до 18, тоест последния елемент няма да го обходя изобщо, затова съм сложила +1
Забравяш нулата. Да, ако index_to_cut
е 19, range
ще приключи при 18, но започвайки от нула, това все пак са 19 итерации.
Ако го направиш така, както го правиш сега, добавяйки едно, при index_to_cut == 19
, ще се получат 20 итерации, което значи, че ще преместиш всяка една карта и ще получиш същото тесте, все едно въобще не си цепила, което от гледна точка на тестовете е проблем.
import random
deck = list(range(20))
index_to_cut = random.randrange(len(deck))
index_to_cut = 19 # Нека го насилим да е последният индекс
for i in range(index_to_cut + 1):
deck.append(deck.pop(0))
print(deck) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Разбрах, не го бях обмислила. Много благодаря!
По-скоро cards
.
В контекста на Game
класа, game_deck
носи също толкова информация, колкото и просто deck
.
Не е нужно да пренареждаш играчите при всеки опит да ги проверя извън кода ти. Просто трябва да ми ги покажеш, без да им сменяш реда.