Решение на Хороскоп от Деян Спиров

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

Към профила на Деян Спиров

Резултати

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

Код

#!/usr/bin/env python
SIGNS=[
('Водолей', (1, 20), (2, 18)),
('Риби', (2, 19), (3, 20)),
('Овен', (3, 21), (4, 20)),
('Телец', (4, 21), (5, 20)),
('Близнаци', (5, 21), (6, 20)),
('Рак', (6, 21), (7, 21)),
('Лъв', (7, 22), (8, 22)),
('Дева', (8, 23), (9, 22)),
('Везни', (9, 23), (10, 22)),
('Скорпион', (10, 23), (11, 21)),
('Стрелец', (11, 22), (12, 21)),
]
def what_is_my_sign(day, month):
for sign, start, end in SIGNS:
if (month, day) >= start and (month, day) <= end:
return sign
if (month, day) >= (12, 22) or (month, day) <= (1, 19):
return 'Козирог'

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

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

OK

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

Деян обнови решението на 04.03.2013 00:36 (преди над 11 години)

+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+signs=[
+ ('Водолей', ( 1,20),( 2,18)),
+ ('Риби', ( 2,19),( 3,20)),
+ ('Овен', ( 3,21),( 4,20)),
+ ('Телец', ( 4,21),( 5,20)),
+ ('Близнаци',( 5,21),( 6,20)),
+ ('Рак', ( 6,21),( 7,21)),
+ ('Лъв', ( 7,22),( 8,22)),
+ ('Дева', ( 8,23),( 9,22)),
+ ('Везни', ( 9,23),(10,22)),
+ ('Скорпион',(10,23),(11,21)),
+ ('Стрелец', (11,22),(12,21)),
+ ]
+
+def what_is_my_sign(day, month):
+ for sign, start, end in signs:
+ if (month,day)>=start and (month, day)<=end:
+ return sign
+ if (month,day)>=(12,22) or (month,day)<=( 1,19):
+ return 'Козирог'
+ return 'invalid sign'

Няколко забележки:

  • # -*- coding: utf-8 -*- е излишно в Python 3.
  • Прочети раздела с whitespace-овете окло запетайки и скоби в PEP 8. На места ги бъркаш
  • Това таблично подреждане в речника е ужасен подход в Python. Прочети и за него в PEP 8.
  • Не очакваш невалиден input. Няма нужда от последния ред.
  • signs можеш да го направиш константа, което в Python става като направиш името в SCREAMING_SNAKE_CASE

Деян обнови решението на 04.03.2013 12:17 (преди над 11 години)

#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-signs=[
- ('Водолей', ( 1,20),( 2,18)),
- ('Риби', ( 2,19),( 3,20)),
- ('Овен', ( 3,21),( 4,20)),
- ('Телец', ( 4,21),( 5,20)),
- ('Близнаци',( 5,21),( 6,20)),
- ('Рак', ( 6,21),( 7,21)),
- ('Лъв', ( 7,22),( 8,22)),
- ('Дева', ( 8,23),( 9,22)),
- ('Везни', ( 9,23),(10,22)),
- ('Скорпион',(10,23),(11,21)),
- ('Стрелец', (11,22),(12,21)),
+SIGNS=[
+ ('Водолей', (1, 20), (2, 18)),
+ ('Риби', (2, 19), (3, 20)),
+ ('Овен', (3, 21), (4, 20)),
+ ('Телец', (4, 21), (5, 20)),
+ ('Близнаци', (5, 21), (6, 20)),
+ ('Рак', (6, 21), (7, 21)),
+ ('Лъв', (7, 22), (8, 22)),
+ ('Дева', (8, 23), (9, 22)),
+ ('Везни', (9, 23), (10, 22)),
+ ('Скорпион', (10, 23), (11, 21)),
+ ('Стрелец', (11, 22), (12, 21)),
]
def what_is_my_sign(day, month):
- for sign, start, end in signs:
- if (month,day)>=start and (month, day)<=end:
+ for sign, start, end in SIGNS:
+ if (month, day) >= start and (month, day) <= end:
return sign
- if (month,day)>=(12,22) or (month,day)<=( 1,19):
+ if (month, day) >= (12, 22) or (month, day) <= (1, 19):
return 'Козирог'
- return 'invalid sign'