Решение на От ливадите до Лас Вегас (и назад) от Назифе Алиджик
Резултати
- 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 (преди около 3 години)
Бих използвал 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.
