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

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

Към профила на Йордан Михайлов

Резултати

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

Код

def interpret_western_sign(day, month):
signs = (
('capricorn', 'aquarius', 21),
('aquarius', 'pisces', 19),
('pisces', 'aries', 21),
('aries', 'taurus', 21),
('taurus', 'gemini', 21),
('gemini', 'cancer', 21),
('cancer', 'leo', 23),
('leo', 'virgo', 23),
('virgo', 'libra', 23),
('libra', 'scorpio', 23),
('scorpio', 'sagittarius', 22),
('sagittarius', 'capricorn', 22)
)
if signs[month - 1][2] > day:
return signs[month - 1][0]
else:
return signs[month - 1][1]
def interpret_chinese_sign(year):
signs = (
'monkey', 'rooster', 'dog', 'pig',
'rat', 'ox', 'tiger', 'rabbit',
'dragon', 'snake', 'horse', 'sheep'
)
return signs[year % 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

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

Йордан обнови решението на 10.03.2015 13:52 (преди над 9 години)

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

Защо в months на 3 ред има 8 спейса, а на останалите по 12? Виж кое от двете е вярното или поне бъди консистентен. Освен това името не е добре подбрано. В months се очаква да се съдържат месеци, а не е точно така :)

Здравейте! По въпросът с интервалите, навсякъде трябва да са 8, а не 12, но предполагам, че нещо се е объркало при копирането, защото при мен изглежда така: http://i.imgur.com/8tJaMmI.png?1 А за името на променливата наистина би било по добре да е нещо като signs_sorted_out_by_months, но не съм сигурен дали така не е твърде дълго, затова може би само signs.

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

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