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

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

Към профила на Радослав Рачев

Резултати

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

Код

SIGNS = [(119, 'Козирог'), (218, 'Водолей'), (320, 'Риби'), (420, 'Овен'),
(520, 'Телец'), (620, 'Близнаци'), (721, 'Рак'), (822, 'Лъв'),
(922, 'Дева'), (1022, 'Везни'), (1121, 'Скорпион'),
(1221, 'Стрелец'), (1231, 'Козирог')]
def what_is_my_sign(day, month):
date = month*100 + day
for sign_end_date, sign in SIGNS:
if date <= sign_end_date:
return sign

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

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

OK

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

Радослав обнови решението на 02.03.2013 21:58 (преди около 11 години)

+signs = [(119, 'Козирог'), (218, 'Водолей'), (320, 'Риби'), (420, 'Овен'),
+ (520, 'Телец'), (620, 'Близнаци'), (721, 'Рак'), (822, 'Лъв'),
+ (922, 'Дева'), (1022, 'Везни'), (1121, 'Скорпион'),
+ (1221, 'Стрелец'), (1231, 'Козирог')]
+
+
+def what_is_my_sign(day, month, *args, **kwargs):
+ date = month*100 + day
+ i = 0
+ while date > signs[i][0]:
+ i = i + 1
+ return signs[i][1]
  1. args и kwargs - за да върви при всякакви аргументи. Ако е лоша практика, ще го махна. ... всъщност, то имаше, че е по-добре да гърми, когато не е спазен формата :D

  2. Ако сложа for, ще има break някъде там - стори ми се едно и също, а това го четях по-лесно.

Лоша практика е да слагаш *args и **kwargs, ако не очакваш други аргументи. Ако някой не знае как ти да ползва функцията - негов си проблем. Казахме ви да не мислите за невалиден input.

Колко точно си сигурен, че има нужда от break? Hint: return :)

i е ужасен избор за име в Python.

Радослав обнови решението на 03.03.2013 22:50 (преди около 11 години)

signs = [(119, 'Козирог'), (218, 'Водолей'), (320, 'Риби'), (420, 'Овен'),
(520, 'Телец'), (620, 'Близнаци'), (721, 'Рак'), (822, 'Лъв'),
(922, 'Дева'), (1022, 'Везни'), (1121, 'Скорпион'),
(1221, 'Стрелец'), (1231, 'Козирог')]
-def what_is_my_sign(day, month, *args, **kwargs):
+def what_is_my_sign(day, month):
date = month*100 + day
- i = 0
- while date > signs[i][0]:
+ for sign_end_date, sign in signs:
- i = i + 1
+ if date <= sign_end_date:
- return signs[i][1]
+ return sign

Радослав обнови решението на 03.03.2013 23:26 (преди около 11 години)

-signs = [(119, 'Козирог'), (218, 'Водолей'), (320, 'Риби'), (420, 'Овен'),
+SIGNS = [(119, 'Козирог'), (218, 'Водолей'), (320, 'Риби'), (420, 'Овен'),
(520, 'Телец'), (620, 'Близнаци'), (721, 'Рак'), (822, 'Лъв'),
(922, 'Дева'), (1022, 'Везни'), (1121, 'Скорпион'),
(1221, 'Стрелец'), (1231, 'Козирог')]
def what_is_my_sign(day, month):
date = month*100 + day
- for sign_end_date, sign in signs:
+ for sign_end_date, sign in SIGNS:
if date <= sign_end_date:
return sign