Решение на Астрологични забави от Цветомир Цанов

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

Към профила на Цветомир Цанов

Резултати

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

Код

def interpret_western_sign(day, month):
sign = ''
if month == 3:
if day < 21:
sign = 'pisces'
else:
sign = 'aries';
elif month == 4:
if day < 21:
sign = 'aries'
else:
sign = 'taurus'
elif month == 5:
if day < 21:
sign = 'taurus'
else:
sign = 'gemini'
elif month == 6:
if day < 21:
sign = 'gemini'
else:
sign = 'cancer'
elif month == 7:
if day < 23:
sign = 'cancer'
else:
sign = 'leo'
elif month == 8:
if day < 23:
sign = 'leo'
else:
sign = 'virgo'
elif month == 9:
if day < 23:
sign = 'virgo'
else:
sign = 'libra'
elif month == 10:
if day < 23:
sign = 'libra'
else:
sign = 'scorpio'
elif month == 11:
if day < 22:
sign = 'scorpio'
else:
sign = 'sagittarius'
elif month == 12:
if day < 22:
sign = 'sagittarius'
else:
sign = 'capricorn'
elif month == 1:
if day < 21:
sign = 'capricorn'
else:
sign = 'aquarius'
elif month == 2:
if day < 19:
sign = 'aquarius'
else:
sign = 'pisces'
return sign
def interpret_chinese_sign(year):
chinese_signs = {1900: 'rat', 1901: 'ox', 1902: 'tiger', 1903: 'rabbit', 1904: 'dragon', 1905: 'snake', 1906: 'horse', 1907:'sheep', 1908:'monkey', 1909:'rooster', 19010:'dog', 19011:'pig'}
s = 1900 + (year - 1900)%12
return chinese_signs[s]
def interpret_both_signs(day, month, year):
western_sign = ''
if month == 3:
if day < 21:
western_sign = 'pisces'
else:
western_sign = 'aries';
elif month == 4:
if day < 21:
western_sign = 'aries'
else:
western_sign = 'taurus'
elif month == 5:
if day < 21:
western_sign = 'taurus'
else:
western_sign = 'gemini'
elif month == 6:
if day < 21:
western_sign = 'gemini'
else:
western_sign = 'cancer'
elif month == 7:
if day < 23:
western_sign = 'cancer'
else:
western_sign = 'leo'
elif month == 8:
if day < 23:
western_sign = 'leo'
else:
western_sign = 'virgo'
elif month == 9:
if day < 23:
western_sign = 'virgo'
else:
western_sign = 'libra'
elif month == 10:
if day < 23:
western_sign = 'libra'
else:
western_sign = 'scorpio'
elif month == 11:
if day < 22:
western_sign = 'scorpio'
else:
western_sign = 'sagittarius'
elif month == 12:
if day < 22:
western_sign = 'sagittarius'
else:
western_sign = 'capricorn'
elif month == 1:
if day < 21:
western_sign = 'capricorn'
else:
western_sign = 'aquarius'
elif month == 2:
if day < 19:
western_sign = 'aquarius'
else:
western_sign = 'pisces'
chinese_signs = {1900: 'rat', 1901: 'ox', 1902: 'tiger', 1903: 'rabbit', 1904: 'dragon', 1905: 'snake', 1906: 'horse', 1907:'sheep', 1908:'monkey', 1909:'rooster', 19010:'dog', 19011:'pig'}
chinese_sign = chinese_signs[1900 + (year - 1900)%12]
return (western_sign, chinese_sign)

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

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

OK

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

Цветомир обнови решението на 11.03.2015 15:03 (преди над 9 години)

+def interpret_western_sign(day, month):
+ sign = ''
+ if month == 3:
+ if day < 21:
+ sign = 'pisces'
+ else:
+ sign = 'aries';
+ elif month == 4:
+ if day < 21:
+ sign = 'aries'
+ else:
+ sign = 'taurus'
+
+ elif month == 5:
+ if day < 21:
+ sign = 'taurus'
+ else:
+ sign = 'gemini'
+ elif month == 6:
+ if day < 21:
+ sign = 'gemini'
+ else:
+ sign = 'cancer'
+ elif month == 7:
+ if day < 23:
+ sign = 'cancer'
+ else:
+ sign = 'leo'
+ elif month == 8:
+ if day < 23:
+ sign = 'leo'
+ else:
+ sign = 'virgo'
+ elif month == 9:
+ if day < 23:
+ sign = 'virgo'
+ else:
+ sign = 'libra'
+ elif month == 10:
+ if day < 23:
+ sign = 'libra'
+ else:
+ sign = 'scorpio'
+ elif month == 11:
+ if day < 22:
+ sign = 'scorpio'
+ else:
+ sign = 'sagittarius'
+ elif month == 12:
+ if day < 22:
+ sign = 'sagittarius'
+ else:
+ sign = 'capricorn'
+ elif month == 1:
+ if day < 21:
+ sign = 'capricorn'
+ else:
+ sign = 'aquarius'
+ elif month == 2:
+ if day < 19:
+ sign = 'aquarius'
+ else:
+ sign = 'pisces'
+ return sign
+
+def interpret_chinese_sign(year):
+ chinese_signs = {1900: 'rat', 1901: 'ox', 1902: 'tiger', 1903: 'rabbit', 1904: 'dragon', 1905: 'snake', 1906: 'horse', 1907:'sheep', 1908:'monkey', 1909:'rooster', 19010:'dog', 19011:'pig'}
+ s = 1900 + (year - 1900)%12
+ return chinese_signs[s]
+
+def interpret_both_signs(day, month, year):
+ western_sign = ''
+ if month == 3:
+ if day < 21:
+ western_sign = 'pisces'
+ else:
+ western_sign = 'aries';
+ elif month == 4:
+ if day < 21:
+ western_sign = 'aries'
+ else:
+ western_sign = 'taurus'
+ elif month == 5:
+ if day < 21:
+ western_sign = 'taurus'
+ else:
+ western_sign = 'gemini'
+ elif month == 6:
+ if day < 21:
+ western_sign = 'gemini'
+ else:
+ western_sign = 'cancer'
+ elif month == 7:
+ if day < 23:
+ western_sign = 'cancer'
+ else:
+ western_sign = 'leo'
+ elif month == 8:
+ if day < 23:
+ western_sign = 'leo'
+ else:
+ western_sign = 'virgo'
+ elif month == 9:
+ if day < 23:
+ western_sign = 'virgo'
+ else:
+ western_sign = 'libra'
+ elif month == 10:
+ if day < 23:
+ western_sign = 'libra'
+ else:
+ western_sign = 'scorpio'
+ elif month == 11:
+ if day < 22:
+ western_sign = 'scorpio'
+ else:
+ western_sign = 'sagittarius'
+ elif month == 12:
+ if day < 22:
+ western_sign = 'sagittarius'
+ else:
+ western_sign = 'capricorn'
+ elif month == 1:
+ if day < 21:
+ western_sign = 'capricorn'
+ else:
+ western_sign = 'aquarius'
+ elif month == 2:
+ if day < 19:
+ western_sign = 'aquarius'
+ else:
+ western_sign = 'pisces'
+
+ chinese_signs = {1900: 'rat', 1901: 'ox', 1902: 'tiger', 1903: 'rabbit', 1904: 'dragon', 1905: 'snake', 1906: 'horse', 1907:'sheep', 1908:'monkey', 1909:'rooster', 19010:'dog', 19011:'pig'}
+ chinese_sign = chinese_signs[1900 + (year - 1900)%12]
+ return (western_sign, chinese_sign)

Твоето решение ме заинтригува. Не само е най-дългото от всички предадени до тук, ами е в пъти по-дълго от повечето предадени ни такива.

След 8-мото copy -> paste на elif, с още една if конструкция вътре не ти ли се стори, че вършиш нещо грешно? А си играеш със всичко на всичко 24 зодии общо и за двете задачи. Ами ако бяха 300?

Освен това имаш ред дълъг 139 символа (при максимум позволени 79 в Python)... на две места... абсолютно еднакви... и то само 139, защото не си слагал нужните интервали навсякъде.

Дори нямам намерение да споменавам за останалите грешки в стила, които си допуснал и тулчето pep8 би ти ги посочило. Моля те, оправи си решението.