Решение на Астрологични забави от Любомир Гавадинов

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

Към профила на Любомир Гавадинов

Резултати

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

Код

CHINESE_ZODIAC = {
1900: "rat",
1901: "ox",
1902: "tiger",
1903: "rabbit",
1904: "dragon",
1905: "snake",
1906: "horse",
1907: "sheep",
1908: "monkey",
1909: "rooster",
1910: "dog",
1911: "pig",
}
WESTERN_ZODIAC = {
1: (21, "aquarius", "capricorn"),
2: (19, "pisces", "aquarius"),
3: (21, "aries", "pisces"),
4: (21, "taurus", "aries"),
5: (21, "gemini", "taurus"),
6: (21, "cancer", "gemini"),
7: (23, "leo", "cancer"),
8: (23, "virgo", "leo"),
9: (23, "libra", "virgo"),
10: (23, "scorpio", "libra"),
11: (22, "sagittarius", "scorpio"),
12: (22, "capricorn", "sagittarius"),
}
def interpret_western_sign(day, month):
month_data = WESTERN_ZODIAC[month]
return month_data[1] if day >= month_data[0] else month_data[2]
def interpret_chinese_sign(year):
start = next(iter(CHINESE_ZODIAC.keys()))
index = start + ((year - start) % 12)
return CHINESE_ZODIAC[index]
def interpret_both_signs(day, month, year):
western_sign = interpret_western_sign(day, month)
chinese_sign = interpret_chinese_sign(year)
return (western_sign, chinese_sign)

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

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

OK

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

Любомир обнови решението на 08.03.2015 23:16 (преди над 9 години)

+def interpret_western_sign(day, month):
+
+ if month == 1:
+ if day >= 21:
+ return "aquarius"
+ else:
+ return "capricorn"
+
+ elif month == 2:
+ if day >= 19:
+ return "pisces"
+ else:
+ return "aquarius"
+
+ elif month == 3:
+ if day >= 21:
+ return "aries"
+ else:
+ return "pisces"
+
+ elif month == 4:
+ if day >= 21:
+ return "taurus"
+ else:
+ return "aries"
+
+ elif month == 5:
+ if day >= 21:
+ return "gemini"
+ else:
+ return "taurus"
+
+ elif month == 6:
+ if day >= 21:
+ return "cancer"
+ else:
+ return "gemini"
+
+ elif month == 7:
+ if day >= 23:
+ return "leo"
+ else:
+ return "cancer"
+
+ elif month == 8:
+ if day >= 23:
+ return "virgo"
+ else:
+ return "leo"
+
+ elif month == 9:
+ if day >= 23:
+ return "libra"
+ else:
+ return "virgo"
+
+ elif month == 10:
+ if day >= 23:
+ return "scorpio"
+ else:
+ return "libra"
+
+ elif month == 11:
+ if day >= 22:
+ return "sagittarius"
+ else:
+ return "scorpio"
+
+ elif month == 12:
+ if day >= 22:
+ return "capricorn"
+ else:
+ return "sagittarius"
+
+ else:
+ return "unknown"
+
+def interpret_chinese_sign(year):
+ zodiac = {
+ 1900: "rat",
+ 1901: "ox",
+ 1902: "tiger",
+ 1903: "rabbit",
+ 1904: "dragon",
+ 1905: "snake",
+ 1906: "horse",
+ 1907: "sheep",
+ 1908: "monkey",
+ 1909: "rooster",
+ 1910: "dog",
+ 1911: "pig",
+ }
+
+ start = 1900
+ index = start + ((year - start) % 12)
+ return zodiac[index]
+
+def interpret_both_signs(day, month, year):
+ western_sign = interpret_western_sign(day, month)
+ chinese_sign = interpret_chinese_sign(year)
+ return (western_sign, chinese_sign)

Решението ти за interpret_chinese_sign е много добро, като препоръка за него може да изнесеш zodiac като глобална константа за файла, вместо да се дефинира вътре във функцията.

И именно защото ми харесва как си решил interpret_chinese_sign се чудя защо не си направил нещо подобно за interpret_western_sign ами си прибягнал до тоя куц похват с if/else-овете :)

Любомир обнови решението на 10.03.2015 00:37 (преди над 9 години)

-def interpret_western_sign(day, month):
+CHINESE_ZODIAC = {
+ 1900: "rat",
+ 1901: "ox",
+ 1902: "tiger",
+ 1903: "rabbit",
+ 1904: "dragon",
+ 1905: "snake",
+ 1906: "horse",
+ 1907: "sheep",
+ 1908: "monkey",
+ 1909: "rooster",
+ 1910: "dog",
+ 1911: "pig",
+}
- if month == 1:
- if day >= 21:
- return "aquarius"
- else:
- return "capricorn"
+WESTERN_ZODIAC = {
+ 1: (21, "aquarius", "capricorn"),
+ 2: (19, "pisces", "aquarius"),
+ 3: (21, "aries", "pisces"),
+ 4: (21, "taurus", "aries"),
+ 5: (21, "gemini", "taurus"),
+ 6: (21, "cancer", "gemini"),
+ 7: (23, "leo", "cancer"),
+ 8: (23, "virgo", "leo"),
+ 9: (23, "libra", "virgo"),
+ 10: (23, "scorpio", "libra"),
+ 11: (22, "sagittarius", "scorpio"),
+ 12: (22, "capricorn", "sagittarius"),
+}
- elif month == 2:
- if day >= 19:
- return "pisces"
- else:
- return "aquarius"
+def interpret_western_sign(day, month):
+ month_data = WESTERN_ZODIAC[month]
+ return month_data[1] if day >= month_data[0] else month_data[2]
- elif month == 3:
- if day >= 21:
- return "aries"
- else:
- return "pisces"
- elif month == 4:
- if day >= 21:
- return "taurus"
- else:
- return "aries"
-
- elif month == 5:
- if day >= 21:
- return "gemini"
- else:
- return "taurus"
-
- elif month == 6:
- if day >= 21:
- return "cancer"
- else:
- return "gemini"
-
- elif month == 7:
- if day >= 23:
- return "leo"
- else:
- return "cancer"
-
- elif month == 8:
- if day >= 23:
- return "virgo"
- else:
- return "leo"
-
- elif month == 9:
- if day >= 23:
- return "libra"
- else:
- return "virgo"
-
- elif month == 10:
- if day >= 23:
- return "scorpio"
- else:
- return "libra"
-
- elif month == 11:
- if day >= 22:
- return "sagittarius"
- else:
- return "scorpio"
-
- elif month == 12:
- if day >= 22:
- return "capricorn"
- else:
- return "sagittarius"
-
- else:
- return "unknown"
-
def interpret_chinese_sign(year):
- zodiac = {
- 1900: "rat",
- 1901: "ox",
- 1902: "tiger",
- 1903: "rabbit",
- 1904: "dragon",
- 1905: "snake",
- 1906: "horse",
- 1907: "sheep",
- 1908: "monkey",
- 1909: "rooster",
- 1910: "dog",
- 1911: "pig",
- }
-
- start = 1900
+ start = next(iter(CHINESE_ZODIAC.keys()))
index = start + ((year - start) % 12)
- return zodiac[index]
+ return CHINESE_ZODIAC[index]
def interpret_both_signs(day, month, year):
western_sign = interpret_western_sign(day, month)
chinese_sign = interpret_chinese_sign(year)
return (western_sign, chinese_sign)