Решение на Шахматни фенове от Йоанна Кръстева
Към профила на Йоанна Кръстева
Резултати
- 10 точки от тестове
- 0 бонус точки
- 10 точки общо
- 17 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
................. ---------------------------------------------------------------------- Ran 17 tests in 0.177s OK
История (5 версии и 13 коментара)
Йоанна обнови решението на 27.11.2022 23:44 (преди почти 2 години)
Йоанна обнови решението на 28.11.2022 00:13 (преди почти 2 години)
Можеш да минеш и без __init__
, тъй като той не прави нищо интересно. Просто един pass
в тялото е достатъчен.
Доста логика в инициализатора - парсване, валидиране...
Бих те посъветвал малко да го разделиш на парчета в отделни методи, за да се поддържа по-лесно. Дори това да е с цената да циклиш повече пъти, качеството на кода ще се повиши.
Уау!
Ако мачваш само един група, малко е безсмислено да използваш групи. Реално regex-а го позлваш само за да валидираш, че инпута съдържа само валидни символи в точно 8 реда. НО, тренираш regex, така че няма да се оплаквам.
isdigit
isalpha
Ако предварително си парснеш позицията в някакъв речник, ще си спестиш всички главоболия около тези цикли с ръчно инкрементиране на индекси. Много по-лесно би станало.
Това е атрибут на класа, а ти ще го използваш като атрибут на иснтанцията. За да работи правилно, трябва да го инициализираш в __init__
. Иначе всички инстанции на класа ще го споделят.
Edited behavior of ChessScore class - only accepts lowercase pieces.
Йоанна обнови решението на 29.11.2022 02:17 (преди почти 2 години)
Ако правилно съм разбрала, би трябвало с chess_positions да се справям с този проблем ?
Е, да, определено кодът тук е по-добре. Ако дефинираш речника динамично, ще е още по-добре, защото сега има шанс за грешка, но определено сега е по-добре.
Edit in getitem behavior + attempt to break the code into separate functions. Other edits made after receiving feedback - use of built-in functions isalpha(), isdigit(), etc.
Йоанна обнови решението на 29.11.2022 15:11 (преди почти 2 години)
Added a dictionary attribute for each chess position because the previous version of the code did not work correctly when initializing and testing more than 1 chess position.
Ако предварително си парснеш позицията в някакъв речник, ще си спестиш всички главоболия около тези цикли с ръчно инкрементиране на индекси. Много по-лесно би станало.
Ако правилно съм разбрала, би трябвало с chess_positions да се справям с този проблем ?
Е, да, определено кодът тук е по-добре. Ако дефинираш речника динамично, ще е още по-добре, защото сега има шанс за грешка, но определено сега е по-добре.