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

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

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

Резултати

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

Код

# coding: utf-8
import os
import sys
Aries = (range(21, 32),3) , (range(1, 20), 4), 'Овен'
Taurus = (range(20, 32),4) , (range(1, 21), 5), 'Телец'
Gemini = (range(21, 32),5) , (range(1, 21), 6), 'Близнаци'
Cancer = (range(21, 32),6) , (range(1, 23), 7), 'Рак'
Leo = (range(23, 32),7) , (range(1, 23), 8), 'Лъв'
Virgo = (range(23, 32),8) , (range(1, 23), 9), 'Дева'
Libra = (range(23, 32),9) , (range(1, 23), 10), 'Везни'
Scorpio = (range(23, 32),10) , (range(1, 22), 11), 'Скорпион'
Sagittarius = (range(22, 32),11) , (range(1, 22), 12), 'Стрелец'
Capricorn = (range(22, 32),12) , (range(1, 20), 1), 'Козирог'
Aquarius = (range(20, 32),1) , (range(1, 19), 2), 'Водолей'
Pisces = (range(20, 32),2) , (range(1, 21), 3), 'Риби'
signs = Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces
def what_is_my_sign(day, month):
for sign in signs:
if month == sign[0][1] and day in sign[0][0] or month == sign[1][1] and day in sign[1][0]:
print(sign[2])
return sign[2]

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

...............
----------------------------------------------------------------------
Ran 15 tests in 0.002s

OK

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

Димитър обнови решението на 04.03.2013 15:08 (преди над 11 години)

+# coding: utf-8
+
+import os
+import sys
+
+Aries = (range(21, 32),3) , (range(1, 20), 4), 'Овен'
+Taurus = (range(20, 32),4) , (range(1, 21), 5), 'Телец'
+Gemini = (range(21, 32),5) , (range(1, 21), 6), 'Близнаци'
+Cancer = (range(21, 32),6) , (range(1, 23), 7), 'Рак'
+Leo = (range(23, 32),7) , (range(1, 23), 8), 'Лъв'
+Virgo = (range(23, 32),8) , (range(1, 23), 9), 'Дева'
+Libra = (range(23, 32),9) , (range(1, 23), 10), 'Везни'
+Scorpio = (range(23, 32),10) , (range(1, 22), 11), 'Скорпион'
+Sagittarius = (range(22, 32),11) , (range(1, 22), 12), 'Стрелец'
+Capricorn = (range(22, 32),12) , (range(1, 20), 1), 'Козирог'
+Aquarius = (range(20, 32),1) , (range(1, 19), 2), 'Водолей'
+Pisces = (range(20, 32),2) , (range(1, 21), 3), 'Риби'
+
+signs = Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces
+
+def what_is_my_sign(day, month):
+ for sign in signs:
+ if month == sign[0][1] and day in sign[0][0] or month == sign[1][1] and day in sign[1][0]:
+ print(sign[2])
+ return sign[2]
  • # coding: utf-8 е излишно в python 3.
  • Защо импортваш os и sys
  • Защо assign-ваш всички зодии на отделно име чак тогава ги набутваш в tuple?
  • Ако нещо е нормално име, го пишеш в snake_case. Ако е константа - SCREAMING_SNAKE_CASE. Такива с главна буква се позват само за класове.
  • 23 ред ти е твърде дълъг. PEP 8 не позволява повече от 79 символа.

Веднага ще дам обяснение - просто имах инсталиран Python 2.7, с който правих други неща, нямащи нищо общо с текущия курс - от там идват всички странни неща по енкодинга. Със спецификациите на езика ще свикна с времето. А за assign-ването на зодиите - така ми се стори по-четливо :?