Решение на От ливадите до Лас Вегас (и назад) от Назифе Алиджик
Резултати
- 7 точки от тестове
- 0 бонус точки
- 7 точки общо
- 10 успешни тест(а)
- 5 неуспешни тест(а)
Код
Лог от изпълнението
FE.......EE...E ====================================================================== ERROR: test_correct_direction_and_players_deal (test.TestBelot) 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 AttributeError: 'NoneType' object has no attribute 'get_suit' ====================================================================== ERROR: test_dealing_ltr (test.TestGame) Test dealing the cards left to right. ---------------------------------------------------------------------- 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 AttributeError: 'NoneType' object has no attribute 'get_suit' ====================================================================== ERROR: 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 AttributeError: 'NoneType' object has no attribute 'get_suit' ====================================================================== ERROR: 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 AttributeError: 'NoneType' object has no attribute 'get_suit' ====================================================================== FAIL: test_correct_deck_init (test.TestBelot) Test initialization with correct 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 AssertionError: Items in the second set but not the first: ('spades', '5') ('diamonds', '3') ('spades', '6') ('hearts', '5') ('spades', '4') ('clubs', '5') ('hearts', '6') ('clubs', '6') ('diamonds', '5') ('clubs', '4') ('hearts', '4') ('diamonds', '6') ('spades', '2') ('diamonds', '4') ('spades', '3') ('clubs', '2') ('hearts', '2') ('clubs', '3') ('hearts', '3') ('diamonds', '2') ---------------------------------------------------------------------- Ran 15 tests in 0.161s FAILED (failures=1, errors=4)
История (4 версии и 10 коментара)
Назифе обнови решението на 11.11.2022 11:52 (преди около 2 години)
Бих използвал protected имена на атрибути като тези, които не използваш извън класа - self._suit
self.card
е излишно, а и нелогично. Тестете има карти, които вече събираш, но тази временно променлива ще остане налична. По-добре направо:
self.cards.append(Card(self.suit, self.face))
Цепенето трябва да има случаен компонент, а не всеки път да цепиш с една карта.
Тук променливата player
не ти триябва, т.е. прието е да използваш _
. Временната променлива долу също е излишна.
for _ in range(number_of_players):
self.players.append(Player())
Всъщност, сега като се замисля, не виждам защо раздаваш картите при инстанциране. Това трябва да се случва само при извикване на deal()
.
Не смятам за редно да обръщаш самите играчи. Просто се убеди, че кодът ти по-долу в този метод ги използва наобратно, но без да ги разместваш в паметта.
Ако ще обхождаш играчите, прави го с for player in self.players:
.
Добавяне на self ще закачи тази променлива към инстанцията ти, което е абсолютно излишно.
Този ред не го разбирам. Нищо не правиш с него.
Моля погледни инструкциите. Този метод трябва да връща данни в тип Deck
.
self.players.index(player)
ти дава индекса, който търсиш.
Забележи, че не трябва да е self.player
, а само player
. player
е това, което методът ти получава. self.player
е атрибут, който въобще не ти трябва да този клса, но е страничен ефект от ред 65.