Решение на Астрологични забави от Калоян Евтимов

Обратно към всички решения

Към профила на Калоян Евтимов

Резултати

  • 10 точки от тестове
  • 0 бонус точки
  • 10 точки общо
  • 6 успешни тест(а)
  • 0 неуспешни тест(а)

Код

CHINESE_ZODIAC = ("monkey", "rooster", "dog", "pig", "rat", "ox",
"tiger", "rabbit", "dragon",
"snake", "horse", "sheep")
WESTERN_ZODIAC = (["capricorn", 20, "aquarius"], ["aquarius", 18, "pisces"],
["pisces", 20, "aries"], ["aries", 20, "taurus"],
["taurus", 20, "gemini"], ["gemini", 20, "cancer"],
["cancer", 22, "leo"], ["leo", 22, "virgo"],
["virgo", 22, "libra"], ["libra", 22, "scorpio"],
["scorpio", 21, "sagittarius"],
["sagittarius", 21, "capricorn"])
def interpret_chinese_sign(year):
return CHINESE_ZODIAC[year % 12]
def interpret_western_sign(day, month):
if day <= WESTERN_ZODIAC[month-1][1]:
return WESTERN_ZODIAC[month-1][0]
else:
return WESTERN_ZODIAC[month-1][2]
def interpret_both_signs(day, month, year):
return (interpret_western_sign(day, month), interpret_chinese_sign(year))

Лог от изпълнението

......
----------------------------------------------------------------------
Ran 6 tests in 0.006s

OK

История (2 версии и 2 коментара)

Калоян обнови решението на 09.03.2015 11:50 (преди над 9 години)

+def interpret_chinese_sign(year):
+ partialDiv = year % 12
+ zodiacStrings = ["monkey", "rooster", "dog", "pig", "rat", "ox",
+ "tiger", "rabbit", "dragon",
+ "snake", "horse", "sheep"]
+ return zodiacStrings[partialDiv]
+
+
+def interpret_western_sign(day, month):
+ months = [["capricorn", 20, "aquarius"], ["aquarius", 18, "pisces"],
+ ["pisces", 20, "aries"], ["aries", 20, "taurus"],
+ ["taurus", 20, "gemini"], ["gemini", 20, "cancer"],
+ ["cancer", 22, "leo"], ["leo", 22, "virgo"],
+ ["virgo", 22, "libra"], ["libra", 22, "scorpio"],
+ ["scorpio", 21, "sagittarius"], ["sagittarius", 21, "capricorn"]]
+ if day <= months[month-1][1]:
+ return months[month-1][0]
+ else:
+ return months[month-1][2]
+
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day, month), interpret_chinese_sign(year))

В Python, имената на променливите се пишат в snake_case. PartialDiv #-> partial_div

Това име partialDiv много ненаред ми звучи а и сигурен ли си че държиш да присвояваш year % 12 експлицитно на някаква променлива?

Добро е решението.

Конвенцията за константи в Питон е името на променливата да е с ГЛАВНИ_БУКВИ и те да са в началото на файла. Много рядко има смисъл константата да е част от дефиницията на функцията ти.

Освен това е по-подходящо те да са tuple, а не list.

Калоян обнови решението на 10.03.2015 00:13 (преди над 9 години)

+CHINESE_ZODIAC = ("monkey", "rooster", "dog", "pig", "rat", "ox",
+ "tiger", "rabbit", "dragon",
+ "snake", "horse", "sheep")
+
+
+WESTERN_ZODIAC = (["capricorn", 20, "aquarius"], ["aquarius", 18, "pisces"],
+ ["pisces", 20, "aries"], ["aries", 20, "taurus"],
+ ["taurus", 20, "gemini"], ["gemini", 20, "cancer"],
+ ["cancer", 22, "leo"], ["leo", 22, "virgo"],
+ ["virgo", 22, "libra"], ["libra", 22, "scorpio"],
+ ["scorpio", 21, "sagittarius"],
+ ["sagittarius", 21, "capricorn"])
+
+
def interpret_chinese_sign(year):
- partialDiv = year % 12
- zodiacStrings = ["monkey", "rooster", "dog", "pig", "rat", "ox",
- "tiger", "rabbit", "dragon",
- "snake", "horse", "sheep"]
- return zodiacStrings[partialDiv]
+ return CHINESE_ZODIAC[year % 12]
def interpret_western_sign(day, month):
- months = [["capricorn", 20, "aquarius"], ["aquarius", 18, "pisces"],
- ["pisces", 20, "aries"], ["aries", 20, "taurus"],
- ["taurus", 20, "gemini"], ["gemini", 20, "cancer"],
- ["cancer", 22, "leo"], ["leo", 22, "virgo"],
- ["virgo", 22, "libra"], ["libra", 22, "scorpio"],
- ["scorpio", 21, "sagittarius"], ["sagittarius", 21, "capricorn"]]
- if day <= months[month-1][1]:
- return months[month-1][0]
+ if day <= WESTERN_ZODIAC[month-1][1]:
+ return WESTERN_ZODIAC[month-1][0]
else:
- return months[month-1][2]
+ return WESTERN_ZODIAC[month-1][2]
def interpret_both_signs(day, month, year):
return (interpret_western_sign(day, month), interpret_chinese_sign(year))