Решение на От ливадите до Лас Вегас (и назад) от Виктор Боев
Резултати
- 7 точки от тестове
- 0 бонус точки
- 7 точки общо
- 11 успешни тест(а)
- 4 неуспешни тест(а)
Код
Лог от изпълнението
......EE..F...F ====================================================================== ERROR: test_init_regular (test.TestDeck) Test initialized cards without filter. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread raise result TypeError: Deck.__init__() missing 1 required positional argument: 'cards' ====================================================================== ERROR: test_shuffling_deck (test.TestDeck) Test shuffling a deck. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread raise result TypeError: Deck.__init__() missing 1 required positional argument: 'cards' ====================================================================== FAIL: test_dealing_rtl (test.TestGame) Test dealing the cards right to left. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread raise result AssertionError: {('clubs', 'Q'), ('clubs', 'K'), ('diamonds', 'K')} not found in ({('clubs', '4'), ('diamonds', '2'), ('clubs', '2')}, {('hearts', 'A'), ('spades', 'Q'), ('spades', 'A')}) ====================================================================== FAIL: test_correct_direction_and_players_deal (test.TestPoker) Test dealing with correct direction and players. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread raise result AssertionError: {('spades', '3'), ('hearts', '10'), ('diamonds', '8'), ('clubs', '6'), ('spades', 'Q')} not found in ({('clubs', 'J'), ('hearts', '6'), ('spades', '8'), ('clubs', '2'), ('diamonds', '4')}, {('spades', '5'), ('clubs', '8'), ('diamonds', '10'), ('spades', 'A'), ('hearts', 'Q')}) ---------------------------------------------------------------------- Ran 15 tests in 0.209s FAILED (failures=2, errors=2)
История (3 версии и 14 коментара)
Виктор обнови решението на 15.11.2022 09:38 (преди над 2 години)
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
Моля не слагай интеравли преди :
. #PEP8
По условие face_filter
се очаква да е аргумент към инициализатора, не отделен метод.
Един цикъл около боите ще направи кодът ти по-компактен и няма да се налага да повтаряш редове.
Моля използвай snake_case
за имена на променливите си.
Освен това, не всяко тесте има 52 карти. Вземи тези числа динамично.
И това можеш да постигнеш със слайсинг, подобно на горния ред.
Този и следващият метод би било логично да са на едно място. Всеки път, когато искам да взема карта, ще искам и да я махна. Не е нужно да извикам два метода за това.
Моля слагай празни редове м/у методите на класа.
Ако няма да използваш променлива, именувай я _
, както е по конвенция.
Освен това range(0, x)
е същото като range(x)
.
Не е логично при всяко раздаване на инициализираш ново тесте. Все едно в реална игра да вадиш нова кутия с карти. Не би трябвало да е проблем за тестовете, но е нелогично.
Моля не слагай интервали преди скобите при извикване на функции.
Моля не използвай еднобуквени имена на променливи. Трудно се проследява кодът след това.
Тук е прието да приравниш списъка с горния ред:
self.deck.face_filter(['2', '3', '4', '5', '6', '7',
'8', '9', '10', 'J', 'Q', 'K', 'A']
Виктор обнови решението на 15.11.2022 13:10 (преди над 2 години)
Благодаря за бързата обратна връзка! Наистина го оценявам
Не е логично при всяко раздаване на инициализираш ново тесте. Все едно в реална игра да вадиш нова кутия с карти. Не би трябвало да е проблем за тестовете, но е нелогично.