Решение на Астрологични забави от Клара Кайралах

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

Към профила на Клара Кайралах

Резултати

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

Код

def interpret_chinese_sign(year):
sign = {'rat': 1900,
'ox': 1901,
'tiger': 1902,
'rabbit': 1903,
'dragon': 1904,
'snake': 1905,
'horse': 1906,
'sheep': 1907,
'monkey': 1908,
'rooster': 1909,
'dog': 1910,
'pig': 1911}
for name, Year in sign.items():
if((year - Year) % 12 == 0):
return name
def interpret_western_sign(day, month):
sign = {1: [20, 'capricorn', 'aquarius'],
2: [18, 'aquarius', 'pisces'],
3: [20, 'pisces', 'aries'],
4: [20, 'aries', 'taurus'],
5: [20, 'taurus', 'gemini'],
6: [20, 'gemini', 'cancer'],
7: [22, 'cancer', 'leo'],
8: [22, 'leo', 'virgo'],
9: [22, 'virgo', 'libra'],
10: [22, 'libra', 'scorpio'],
11: [21, 'scorpio', 'sagittarius'],
12: [21, 'sagittarius', 'capricorn']}
for Month, cond in sign.items():
if(Month == month):
if(day <= cond[0]):
return cond[1]
else:
return cond[2]
def interpret_both_signs(day, month, year):
t = (interpret_western_sign(day, month), interpret_chinese_sign(year))
return t

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

......
----------------------------------------------------------------------
Ran 6 tests in 0.006s

OK

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

Клара обнови решението на 07.03.2015 00:41 (преди над 9 години)

+def interpret_chinese_sign(year):
+ sign = {'rat': 1900,
+ 'ox': 1901,
+ 'tiger': 1902,
+ 'rabbit': 1903,
+ 'dragon': 1904,
+ 'snake': 1905,
+ 'horse': 1906,
+ 'sheep': 1907,
+ 'monkey': 1908,
+ 'rooster': 1909,
+ 'dog': 1910,
+ 'pig': 1911}
+ if(year < 0):
+ return None
+ for name, Year in sign.items():
+ if((year - Year) % 12 == 0):
+ return name
+
+
+def interpret_western_sign(day, month):
+ sign = {1: [20, 'capricorn', 'aquarius'],
+ 2: [18, 'aquarius', 'pisces'],
+ 3: [20, 'pisces', 'aries'],
+ 4: [20, 'aries', 'taurus'],
+ 5: [20, 'taurus', 'gemini'],
+ 6: [20, 'gemini', 'cancer'],
+ 7: [22, 'cancer', 'leo'],
+ 8: [22, 'leo', 'virgo'],
+ 9: [22, 'virgo', 'libra'],
+ 10: [22, 'libra', 'scorpio'],
+ 11: [21, 'scorpio', 'sagittarius'],
+ 12: [21, 'sagittarius', 'capricorn']}
+ if(month < 1 and month > 12):
+ return None
+ if(day < 1 and day > 31):
+ return None
+ for Month, cond in sign.items():
+ if(Month == month):
+ if(day <= cond[0]):
+ return cond[1]
+ else:
+ return cond[2]
+
+
+def interpret_both_signs(day, month, year):
+ t = (interpret_western_sign(day, month), interpret_chinese_sign(year))
+ return t

Няма нужда да проверяваш коректността на входните данни, освен това проверката ти те пази от случай, в който едно число е едновременно от двете страни на интервал, което така или иначе е математически невъзможно да се случи. :)

Решението просто да изключиш годините по-малки от нула също не е много яко.

Клара обнови решението на 07.03.2015 13:36 (преди над 9 години)

def interpret_chinese_sign(year):
sign = {'rat': 1900,
'ox': 1901,
'tiger': 1902,
'rabbit': 1903,
'dragon': 1904,
'snake': 1905,
'horse': 1906,
'sheep': 1907,
'monkey': 1908,
'rooster': 1909,
'dog': 1910,
'pig': 1911}
- if(year < 0):
- return None
for name, Year in sign.items():
if((year - Year) % 12 == 0):
return name
def interpret_western_sign(day, month):
sign = {1: [20, 'capricorn', 'aquarius'],
2: [18, 'aquarius', 'pisces'],
3: [20, 'pisces', 'aries'],
4: [20, 'aries', 'taurus'],
5: [20, 'taurus', 'gemini'],
6: [20, 'gemini', 'cancer'],
7: [22, 'cancer', 'leo'],
8: [22, 'leo', 'virgo'],
9: [22, 'virgo', 'libra'],
10: [22, 'libra', 'scorpio'],
11: [21, 'scorpio', 'sagittarius'],
12: [21, 'sagittarius', 'capricorn']}
- if(month < 1 and month > 12):
- return None
- if(day < 1 and day > 31):
- return None
for Month, cond in sign.items():
if(Month == month):
if(day <= cond[0]):
return cond[1]
else:
return cond[2]
def interpret_both_signs(day, month, year):
t = (interpret_western_sign(day, month), interpret_chinese_sign(year))
return t