Христина обнови решението на 27.04.2013 19:39 (преди над 11 години)
+REPOSITORY = 'https://github.com/Hrisi/python-retrospective'
+
+
+# Неща, които научих:
+#
+#1. В Python True and "string1" връща 'string1' и False and 'string1' връща
+# False, а операция or връща лявата стойност, ако тя e истина, без да се
+# интересува от дясната, но ако лявата е False, то or връща дясната.
+# Следователно return condition and HOROSCOPE[month - 1][1] or
+# HOROSCOPE[month - 2][1], тук condition = HOROSCOPE[month - 1][0] <= day),
+# ще върне HOROSCOPE[month - 1][1] или HOROSCOPE[month - 2][1], в зависимост
+# от това дали условието condition e вярно или не.
+#
+# 2. Когато изнасям списък, тюпъл и т.н. извън функция (за да не се дефинират
+# при всяко нейно извикване) е по-добре той да е константа. Както научих,
+# по-добре е, ако се използват string-ове, те да се изнасят като константи,
+# тъй като по този начин лесно могат да се променят при нужда, като се
+# изключва вероятността в противен случай да не променим низовете на някои
+# от местата, където ме ги използвали.
+#
+# 3. Функциите, които са дефинирани в други функции и които могат да се
+# преизползват, се изнасят извън тях. Това би направило кода по-четим.В
+# противен случай може в даден момент да имаме дефинирани няколко функции
+# във функции, които да вършат едно исъщо нещо - т.е., да имаме повтаряне на
+# код, вместо преизползването му.
+#
+# 4. Добра практика е да именовам променливите си по-смислено:x -> argument;
+# f,g -> fun1, func2; i -> elements.
+#
+# 5. Считам, че в оригиналното решение на задача 3 списъкът list_of_children
+# е по-удачно бъде "защитена" променлива _children, тъй като в него само се
+# добавят нови деца, а не би трябвало да се променят текущите. Също така
+# промяна по оригиналния списък list_of_children на даден обект, като
+# например изтриване на дете, не би довела до промяна на майката/бащата на
+# това дете, което ще повлияе на функционалността.
+#
+# 6. В задача 4 дефинирам константи WIN_CONFIGURATION, ROW и COLUMN, за да
+# добавя функционалността да се създава дъска с произволен брой колони и
+# редове, което става бързо и лесно само чрез промяна на константите. Освен
+# това може да се създават различни "правила" на играта чрез добавяне на
+# още печеливши конфигурации в WIN_CONFIGURATION. Хубавото при този подход
+# е, че логиката по-надолу в програмата се запазва и не е нужно да променяме
+# друго, освен константите. Дефинираме и BOARD_VALUES, за да имаме опцията
+# да променим стойностите по подразбиране за играта "X" и "O", ако желаем.
Нещо, което не научих - защо не минава pep8 за горния код. Твърди, че шести ред е 87 символа, което не е така. Всички редове са <= 79 символа. Защо се получава така?