Решение на Астрологични забави от Стоян Иванов

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

Към профила на Стоян Иванов

Резултати

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

Код

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

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

......
----------------------------------------------------------------------
Ran 6 tests in 0.007s

OK

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

Стоян обнови решението на 09.03.2015 17:44 (преди над 9 години)

+def interpret_western_sign(day, month):
+
+ sign = ("aries","taurus","gemini","cancer","leo",
+ "virgo","libra","scorpio","sagittarius",
+ "capricorn","aquarius","pisces")
+
+ if (month == 3 and day>=21) or (month == 4 and day <= 20) :
+
+ return sign[0]
+
+ elif (month == 4 and day>=21 ) or (month== 5 and day <= 20):
+
+ return sign[1]
+
+ elif (month == 5 and day>=21) or (month == 6 and day <= 20) :
+
+ return sign[2]
+
+ elif (month == 6 and day>=21 ) or ( month == 7 and day <= 22):
+
+ return sign[3]
+
+ elif (month == 7 and day >= 23 ) or (month== 8 and day <= 22) :
+
+ return sign[4]
+
+ elif (month == 8 and day >=23 ) or ( month == 9 and day<= 22) :
+
+ return sign[5]
+
+ elif (month == 9 and day >=23 ) or (month == 10 and day <=22) :
+
+ return sign[6]
+
+ elif (month == 10 and day >=23 ) or (month == 11 and day <=21) :
+
+ return sign[7]
+
+ elif (month == 11 and day >=22 ) or (month== 12 and day <= 21):
+
+ return sign[8]
+
+ elif (month == 12 and day >=22 ) or (month == 1 and day <=20):
+
+ return sign[9]
+
+ elif ( month == 1 and day >=21) or (month == 2 and day < 19) :
+
+ return sign[10]
+
+ elif (month == 2 and day >=19 ) or (month == 3 and day <=20):
+
+ return sign[11]
+
+def interpret_chinese_sign(year):
+
+ number = (year - 1900) % 12
+
+ sign = {0 : "rat",1 : "ox", 2 : "tiger",3 : "rabbit",
+ 4 : "dragon",5 : "snake",6 : "horse",7 : "sheep",
+ 8 : "monkey",9 : "rooster",10 : "dog",11 : "pig"}
+
+ return sign[number]
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day,month),interpret_chinese_sign(year))
+
  • мой съвет е, бързо да оправиш идентацията, защото ще изгубиш точки. Трябва да е 4 интервала
  • отделно имаш редове, които са празни и има само интервали по тях (лошо нагласен едитор - отдели време да си го нагласиш)
  • виж как в interpret_western_sign си достъпваш зодиите с индексация, без да се налага да създаваш речник с ключове 0, 1, 2, 3 и т.н.. Защо създаващ такива ключове в interpret_chinese_sign?
  • Не можеш ли да измислиш нещо, с което да махнеш тея if-ове. Ако зодиите бяха 5403 на брой - ми се струва че щеше да си го измислил вече :)
  • number е много неподходящо име на променлива в случая с interpret_chinese_sign. Даже може и да не присвояваш (year - 1900) % 12 на променлива.

Стоян обнови решението на 11.03.2015 10:40 (преди над 9 години)

def interpret_western_sign(day, month):
-
- sign = ("aries","taurus","gemini","cancer","leo",
- "virgo","libra","scorpio","sagittarius",
- "capricorn","aquarius","pisces")
+ sign = ("capricorn","aquarius","pisces","aries",
+ "taurus","gemini","cancer","leo","virgo",
+ "libra","scorpio","sagittarius","capricorn")
+ sign_end = (21,19,21,21,
+ 21,21,23,23,
+ 23,23,22,22)
+ if day >= sign_end[month-1]:
+ next_sign = 1
+ else:
+ next_sign = 0
+ return sign[month-1 + next_sign]
- if (month == 3 and day>=21) or (month == 4 and day <= 20) :
-
- return sign[0]
-
- elif (month == 4 and day>=21 ) or (month== 5 and day <= 20):
-
- return sign[1]
-
- elif (month == 5 and day>=21) or (month == 6 and day <= 20) :
-
- return sign[2]
-
- elif (month == 6 and day>=21 ) or ( month == 7 and day <= 22):
-
- return sign[3]
-
- elif (month == 7 and day >= 23 ) or (month== 8 and day <= 22) :
-
- return sign[4]
-
- elif (month == 8 and day >=23 ) or ( month == 9 and day<= 22) :
-
- return sign[5]
-
- elif (month == 9 and day >=23 ) or (month == 10 and day <=22) :
-
- return sign[6]
-
- elif (month == 10 and day >=23 ) or (month == 11 and day <=21) :
-
- return sign[7]
-
- elif (month == 11 and day >=22 ) or (month== 12 and day <= 21):
-
- return sign[8]
-
- elif (month == 12 and day >=22 ) or (month == 1 and day <=20):
-
- return sign[9]
-
- elif ( month == 1 and day >=21) or (month == 2 and day < 19) :
-
- return sign[10]
-
- elif (month == 2 and day >=19 ) or (month == 3 and day <=20):
-
- return sign[11]
-
def interpret_chinese_sign(year):
-
- number = (year - 1900) % 12
-
- sign = {0 : "rat",1 : "ox", 2 : "tiger",3 : "rabbit",
- 4 : "dragon",5 : "snake",6 : "horse",7 : "sheep",
- 8 : "monkey",9 : "rooster",10 : "dog",11 : "pig"}
-
- return sign[number]
-
+ sign = ("rat", "ox", "tiger","rabbit",
+ "dragon","snake","horse","sheep",
+ "monkey","rooster","dog","pig")
+ return sign[(year - 1900) % 12]
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))

Стоян обнови решението на 11.03.2015 11:46 (преди над 9 години)

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