Решение на Хороскоп от Александър Петков

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

Към профила на Александър Петков

Резултати

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

Код

def what_is_my_sign(day, month):
signs = [('Козирог', 22), ('Водолей', 20), ('Риби', 19), ('Овен', 21),
('Телец', 21), ('Близнаци', 21), ('Рак', 21), ('Лъв', 22),
('Дева', 23), ('Везни', 23), ('Скорпион', 23), ('Стрелец', 22)]
late_in_month = day >= signs[month % 12][1]
return signs[(month + late_in_month - 1) % 12][0]

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

...............
----------------------------------------------------------------------
Ran 15 tests in 0.001s

OK

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

Александър обнови решението на 01.03.2013 01:20 (преди над 11 години)

+def what_is_my_sign(day, month):
+ signs = [('Козирог',22), ('Водолей',20), ('Риби',19), ('Овен',21),
+ ('Телец',21), ('Близнаци',21), ('Рак',21), ('Лъв',22),
+ ('Дева',23), ('Везни',23), ('Скорпион',23), ('Стрелец',22)]
+ is_big = day >= signs[month % 12][1]
+ return signs[(month-1 + is_big) % 12][0]

Изглежда елегантно. Обаче...

  • слагай интервал след запетаите.
  • името is_big не изглежда твърде подходящо.
  • аз лично бих написал (month-1 + is_big) по малко по-различен начин. Отдели минута на това.

Александър обнови решението на 01.03.2013 12:39 (преди над 11 години)

def what_is_my_sign(day, month):
- signs = [('Козирог',22), ('Водолей',20), ('Риби',19), ('Овен',21),
- ('Телец',21), ('Близнаци',21), ('Рак',21), ('Лъв',22),
+ signs = [('Козирог', 22), ('Водолей', 20), ('Риби', 19), ('Овен', 21),
- ('Дева',23), ('Везни',23), ('Скорпион',23), ('Стрелец',22)]
+ ('Телец', 21), ('Близнаци', 21), ('Рак', 21), ('Лъв', 22),
- is_big = day >= signs[month % 12][1]
+ ('Дева', 23), ('Везни', 23), ('Скорпион', 23), ('Стрелец', 22)]
- return signs[(month-1 + is_big) % 12][0]
+ late_in_month = day >= signs[month % 12][1]
+ return signs[(month + late_in_month - 1) % 12][0]