Решение на Хороскоп от Рейхан Садък

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

Към профила на Рейхан Садък

Резултати

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

Код

HOROSCOPE_SIGNS_DICT = {1: {"first_sign": "Козирог", "second_sign": "Водолоей", "separator": 19},
2: {"first_sign": "Водолоей", "second_sign": "Риби", "separator": 18},
3: {"first_sign": "Риби", "second_sign": "Овен", "separator": 20},
4: {"first_sign": "Овен", "second_sign": "Телец", "separator": 20},
5: {"first_sign": "Телец", "second_sign": "Близнаци", "separator": 20},
6: {"first_sign": "Близнаци", "second_sign": "Рак", "separator": 20},
7: {"first_sign": "Рак", "second_sign": "Лъв", "separator": 21},
8: {"first_sign": "Лъв", "second_sign": "Дева", "separator": 22},
9: {"first_sign": "Дева", "second_sign": "Везни", "separator": 22},
10: {"first_sign": "Везни", "second_sign": "Скорпион", "separator": 22},
11: {"first_sign": "Скорпион", "second_sign": "Стрелец", "separator": 21},
12: {"first_sign": "Стрелец", "second_sign": "Козирог", "separator": 21}}
def what_is_my_sign(day, month):
if day <= HOROSCOPE_SIGNS_DICT[month]["separator"]:
return HOROSCOPE_SIGNS_DICT[month]["first_sign"]
else:
return HOROSCOPE_SIGNS_DICT[month]["second_sign"]

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

F..............
======================================================================
FAIL: test_aquaris (test.HoroscopeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/d20130307-16279-r0pnqb/test.py", line 38, in test_aquaris
    self.assertEqual(solution.what_is_my_sign(2, 2), 'Водолей')
AssertionError: 'Водолоей' != 'Водолей'
- Водолоей
?      -
+ Водолей


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

FAILED (failures=1)

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

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

+import sys
+
+horoscope_signs_dict = {1: {"first_sign": "Козирог", "second_sign": "Водолоей", "separator": 19},
+ 2: {"first_sign": "Водолоей", "second_sign": "Риби", "separator": 18},
+ 3: {"first_sign": "Риби", "second_sign": "Овен", "separator": 20},
+ 4: {"first_sign": "Овен", "second_sign": "Телец", "separator": 20},
+ 5: {"first_sign": "Телец", "second_sign": "Близнаци", "separator": 20},
+ 6: {"first_sign": "Близнаци", "second_sign": "Рак", "separator": 20},
+ 7: {"first_sign": "Рак", "second_sign": "Лъв", "separator": 21},
+ 8: {"first_sign": "Лъв", "second_sign": "Дева", "separator": 22},
+ 9: {"first_sign": "Дева", "second_sign": "Везни", "separator": 22},
+ 10: {"first_sign": "Везни", "second_sign": "Скорпион", "separator": 22},
+ 11: {"first_sign": "Скорпион", "second_sign": "Стрелец", "separator": 21},
+ 12: {"first_sign": "Стрелец", "second_sign": "Козирог", "separator": 21}}
+
+month_days_dict = {1: 31,
+ 2: 29,
+ 3: 31,
+ 4: 30,
+ 5: 31,
+ 6: 30,
+ 7: 31,
+ 8: 31,
+ 9: 30,
+ 10: 31,
+ 11: 30,
+ 12: 31}
+
+def is_valid_date(day, month):
+ if month < 1 or month > 12:
+ return False
+ elif day < 1 or day > month_days_dict[month]:
+ return False
+ else:
+ return True
+
+def what_is_my_sign(day, month):
+ if day <= horoscope_signs_dict[month]["separator"]:
+ return horoscope_signs_dict[month]["first_sign"]
+ else:
+ return horoscope_signs_dict[month]["second_sign"]
+
+if not len(sys.argv) == 3:
+ print("Въведете два аргумента: номерът на деня и месеца, в който сте родени")
+elif is_valid_date(int(sys.argv[1]), int(sys.argv[2])):
+ print(what_is_my_sign(int(sys.argv[1]), int(sys.argv[2])))
+else:
+ print("Невалидна дата")

Изрично ви казахме да не проверявате за невалиден input и очевидно ще вземаме точки ако го правите. Причината да го правим е наличието на подобни решения :)

Двата речника е добра идея да ги направиш константи, т.е. с имена в SCREAMING_SNAKE_CASE.

Рейхан обнови решението на 03.03.2013 23:22 (преди над 11 години)

-import sys
-
-horoscope_signs_dict = {1: {"first_sign": "Козирог", "second_sign": "Водолоей", "separator": 19},
+HOROSCOPE_SIGNS_DICT = {1: {"first_sign": "Козирог", "second_sign": "Водолоей", "separator": 19},
2: {"first_sign": "Водолоей", "second_sign": "Риби", "separator": 18},
3: {"first_sign": "Риби", "second_sign": "Овен", "separator": 20},
4: {"first_sign": "Овен", "second_sign": "Телец", "separator": 20},
5: {"first_sign": "Телец", "second_sign": "Близнаци", "separator": 20},
6: {"first_sign": "Близнаци", "second_sign": "Рак", "separator": 20},
7: {"first_sign": "Рак", "second_sign": "Лъв", "separator": 21},
8: {"first_sign": "Лъв", "second_sign": "Дева", "separator": 22},
9: {"first_sign": "Дева", "second_sign": "Везни", "separator": 22},
10: {"first_sign": "Везни", "second_sign": "Скорпион", "separator": 22},
11: {"first_sign": "Скорпион", "second_sign": "Стрелец", "separator": 21},
12: {"first_sign": "Стрелец", "second_sign": "Козирог", "separator": 21}}
-
-month_days_dict = {1: 31,
- 2: 29,
- 3: 31,
- 4: 30,
- 5: 31,
- 6: 30,
- 7: 31,
- 8: 31,
- 9: 30,
- 10: 31,
- 11: 30,
- 12: 31}
-def is_valid_date(day, month):
- if month < 1 or month > 12:
- return False
- elif day < 1 or day > month_days_dict[month]:
- return False
- else:
- return True
-
def what_is_my_sign(day, month):
- if day <= horoscope_signs_dict[month]["separator"]:
- return horoscope_signs_dict[month]["first_sign"]
+ if day <= HOROSCOPE_SIGNS_DICT[month]["separator"]:
+ return HOROSCOPE_SIGNS_DICT[month]["first_sign"]
else:
- return horoscope_signs_dict[month]["second_sign"]
-
+ return HOROSCOPE_SIGNS_DICT[month]["second_sign"]
-if not len(sys.argv) == 3:
- print("Въведете два аргумента: номерът на деня и месеца, в който сте родени")
-elif is_valid_date(int(sys.argv[1]), int(sys.argv[2])):
- print(what_is_my_sign(int(sys.argv[1]), int(sys.argv[2])))
-else:
- print("Невалидна дата")