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

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

Към профила на Вера Бойчева

Резултати

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

Код

def interpret_western_sign(day, month):
months = [
[21, 'capricorn', 'aquarius'],
[19, 'aquarius', 'pisces'],
[21, 'pisces', 'aries'],
[21, 'aries', 'taurus'],
[21, 'taurus', 'gemini'],
[21, 'gemini', 'cancer'],
[23, 'cancer', 'leo'],
[23, 'leo', 'virgo'],
[23, 'virgo', 'libra'],
[23, 'libra', 'scorpio'],
[22, 'scorpio', 'sagittarius'],
[22, 'sagittarius', 'capricorn']
]
if day < months[month-1][0]:
return months[month-1][1]
else:
return months[month-1][2]
def interpret_chinese_sign(year):
chinese_signs = [
'rat',
'ox',
'tiger',
'rabbit',
'dragon',
'snake',
'horse',
'sheep',
'monkey',
'rooster',
'dog',
'pig'
]
return chinese_signs[(abs(year - 1900)) % 12]
def interpret_both_signs(day, month, year):
first_argument = interpret_western_sign(day, month)
second_argument = interpret_chinese_sign(year)
return (first_argument, second_argument)

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

...F.F
======================================================================
FAIL: test_negative_years (test.TestSigns)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20150312-24164-1fizd05/test.py", line 26, in test_negative_years
    self.assertEqual(solution.interpret_chinese_sign(-23), 'rooster')
AssertionError: 'rabbit' != 'rooster'
- rabbit
+ rooster


======================================================================
FAIL: test_zeroth_year (test.TestSigns)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20150312-24164-1fizd05/test.py", line 29, in test_zeroth_year
    self.assertEqual(solution.interpret_chinese_sign(0), 'monkey')
AssertionError: 'dragon' != 'monkey'
- dragon
+ monkey


----------------------------------------------------------------------
Ran 6 tests in 0.008s

FAILED (failures=2)

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

Вера обнови решението на 10.03.2015 23:54 (преди над 9 години)

+def interpret_western_sign(day, month):
+ months = {
+ 3: [21, 11, 0],
+ 4: [21, 0, 1],
+ 5: [21, 1, 2],
+ 6: [21, 2, 3],
+ 7: [23, 3, 4],
+ 8: [23, 4, 5],
+ 9: [23, 5, 6],
+ 10: [23, 6, 7],
+ 11: [22, 7, 8],
+ 12: [22, 8, 9],
+ 1: [21, 9, 10],
+ 2: [19, 10, 11]
+ }
+ signs = [
+ 'aries',
+ 'taurus',
+ 'gemini',
+ 'cancer',
+ 'leo',
+ 'virgo',
+ 'libra',
+ 'scorpio',
+ 'sagittarius',
+ 'capricorn',
+ 'aquarius',
+ 'pisces'
+ ]
+ if day < months.get(month)[0]:
+ return signs[months.get(month)[1]]
+ else:
+ return signs[months.get(month)[2]]
+
+
+def interpret_chinese_sign(year):
+ chinese_signs = [
+ 'rat',
+ 'ox',
+ 'tiger',
+ 'rabbit',
+ 'dragon',
+ 'snake',
+ 'horse',
+ 'sheep',
+ 'monkey',
+ 'rooster',
+ 'dog',
+ 'pig'
+ ]
+ return chinese_signs[(year - 1900) % 12]
+
+
+def interpret_both_signs(day, month, year):
+ arg1 = interpret_western_sign(day, month)
+ arg2 = interpret_chinese_sign(year)
+ res = (arg1, arg2)
+ return res

Вера обнови решението на 10.03.2015 23:59 (преди над 9 години)

def interpret_western_sign(day, month):
months = {
3: [21, 11, 0],
4: [21, 0, 1],
5: [21, 1, 2],
6: [21, 2, 3],
7: [23, 3, 4],
8: [23, 4, 5],
9: [23, 5, 6],
10: [23, 6, 7],
11: [22, 7, 8],
12: [22, 8, 9],
1: [21, 9, 10],
2: [19, 10, 11]
}
signs = [
'aries',
'taurus',
'gemini',
'cancer',
'leo',
'virgo',
'libra',
'scorpio',
'sagittarius',
'capricorn',
'aquarius',
'pisces'
]
if day < months.get(month)[0]:
return signs[months.get(month)[1]]
else:
return signs[months.get(month)[2]]
def interpret_chinese_sign(year):
chinese_signs = [
'rat',
'ox',
'tiger',
'rabbit',
'dragon',
'snake',
'horse',
'sheep',
'monkey',
'rooster',
'dog',
'pig'
]
- return chinese_signs[(year - 1900) % 12]
+ return chinese_signs[(abs(year - 1900)) % 12]
def interpret_both_signs(day, month, year):
- arg1 = interpret_western_sign(day, month)
- arg2 = interpret_chinese_sign(year)
+ first_argument = interpret_western_sign(day, month)
- res = (arg1, arg2)
+ second_argument = interpret_chinese_sign(year)
- return res
+ result = (first_argument, second_argument)
+ return result
  • Пусни си тестовете от форума и помисли за крайни случаи, които си изпуснала
  • Променливата result е излишна, можеш директно да връщаш в случая
  • В първата функция можеш да обединиш двете колекции в една, за да избегнеш този речник с ключове последователни числа :)

Вера обнови решението на 11.03.2015 00:56 (преди над 9 години)

def interpret_western_sign(day, month):
- months = {
- 3: [21, 11, 0],
- 4: [21, 0, 1],
- 5: [21, 1, 2],
- 6: [21, 2, 3],
- 7: [23, 3, 4],
- 8: [23, 4, 5],
- 9: [23, 5, 6],
- 10: [23, 6, 7],
- 11: [22, 7, 8],
- 12: [22, 8, 9],
- 1: [21, 9, 10],
- 2: [19, 10, 11]
- }
- signs = [
- 'aries',
- 'taurus',
- 'gemini',
- 'cancer',
- 'leo',
- 'virgo',
- 'libra',
- 'scorpio',
- 'sagittarius',
- 'capricorn',
- 'aquarius',
- 'pisces'
- ]
- if day < months.get(month)[0]:
- return signs[months.get(month)[1]]
+ months = [
+ [21, 'capricorn', 'aquarius'],
+ [19, 'aquarius', 'pisces'],
+ [21, 'pisces', 'aries'],
+ [21, 'aries', 'taurus'],
+ [21, 'taurus', 'gemini'],
+ [21, 'gemini', 'cancer'],
+ [23, 'cancer', 'leo'],
+ [23, 'leo', 'virgo'],
+ [23, 'virgo', 'libra'],
+ [23, 'libra', 'scorpio'],
+ [22, 'scorpio', 'sagittarius'],
+ [22, 'sagittarius', 'capricorn']
+ ]
+ if day < months[month-1][0]:
+ return months[month-1][1]
else:
- return signs[months.get(month)[2]]
+ return months[month-1][2]
def interpret_chinese_sign(year):
chinese_signs = [
'rat',
'ox',
'tiger',
'rabbit',
'dragon',
'snake',
'horse',
'sheep',
'monkey',
'rooster',
'dog',
'pig'
]
return chinese_signs[(abs(year - 1900)) % 12]
def interpret_both_signs(day, month, year):
first_argument = interpret_western_sign(day, month)
second_argument = interpret_chinese_sign(year)
- result = (first_argument, second_argument)
- return result
+ return (first_argument, second_argument)