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

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

Към профила на Константин Димитров

Резултати

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

Код

WESTERN_SIGNS = [
(21, 'aquarius'),
(19, 'pisces'),
(21, 'aries'),
(21, 'taurus'),
(21, 'gemini'),
(21, 'cancer'),
(23, 'leo'),
(23, 'virgo'),
(23, 'libra'),
(23, 'scorpio'),
(22, 'sagittarius'),
(22, 'capricorn'),
]
CHINESE_SIGNS = [
'rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake',
'horse', 'sheep', 'monkey', 'rooster', 'dog', 'pig',
]
def interpret_western_sign(day, month):
if day >= WESTERN_SIGNS[month - 1][0]:
return WESTERN_SIGNS[month - 1][1]
else:
return WESTERN_SIGNS[month - 2][1]
def interpret_chinese_sign(year):
return CHINESE_SIGNS[year % 12 - 4]
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 коментара)

Константин обнови решението на 08.03.2015 12:12 (преди над 9 години)

+western_signs = [
+ (21, 'aquarius'),
+ (19, 'pisces'),
+ (21, 'aries'),
+ (21, 'taurus'),
+ (21, 'gemini'),
+ (21, 'cancer'),
+ (23, 'leo'),
+ (23, 'virgo'),
+ (23, 'libra'),
+ (23, 'scorpio'),
+ (22, 'sagittarius'),
+ (22, 'capricorn'),
+ ]
+
+chinese_signs = [
+ 'rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake',
+ 'horse', 'sheep', 'monkey', 'rooster', 'dog', 'pig',
+ ]
+
+def interpret_western_sign(day, month):
+ if day >= western_signs[month - 1][0]:
+ return western_signs[month - 1][1]
+ else:
+ return western_signs[month - 2][1]
+
+def interpret_chinese_sign(year):
+ return chinese_signs[year % 12 - 4]
+
+def interpret_both_signs(day, month, year):
+ return interpret_western_sign(day, month),\
+ interpret_chinese_sign(year)

Само няколко изключително малки забележки:

  • константите трябва да са в SCREAM_SNAKE_CASE
  • отделяй глобално дефинираните функции с 2 празни реда
  • аз лично бих написал ред 31 и ред 32 на един ред. (Под 79 символа са на дължина, така че си в играта :))

Константин обнови решението на 08.03.2015 12:34 (преди над 9 години)

-western_signs = [
+WESTERN_SIGNS = [
(21, 'aquarius'),
(19, 'pisces'),
(21, 'aries'),
(21, 'taurus'),
(21, 'gemini'),
(21, 'cancer'),
(23, 'leo'),
(23, 'virgo'),
(23, 'libra'),
(23, 'scorpio'),
(22, 'sagittarius'),
(22, 'capricorn'),
]
-chinese_signs = [
+CHINESE_SIGNS = [
'rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake',
'horse', 'sheep', 'monkey', 'rooster', 'dog', 'pig',
]
+
def interpret_western_sign(day, month):
- if day >= western_signs[month - 1][0]:
- return western_signs[month - 1][1]
+ if day >= WESTERN_SIGNS[month - 1][0]:
+ return WESTERN_SIGNS[month - 1][1]
else:
- return western_signs[month - 2][1]
+ return WESTERN_SIGNS[month - 2][1]
+
def interpret_chinese_sign(year):
- return chinese_signs[year % 12 - 4]
+ return CHINESE_SIGNS[year % 12 - 4]
+
def interpret_both_signs(day, month, year):
- return interpret_western_sign(day, month),\
- interpret_chinese_sign(year)
+ return interpret_western_sign(day, month), interpret_chinese_sign(year)