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

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

Към профила на Цветан Мадански

Резултати

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

Код

def interpret_western_sign(day, month):
western_zodiac = [['capricorn', 'aquarius', 20],
['aquarius', 'pisces', 19], ['pisces', 'aries', 20],
['aries', 'taurus', 20], ['taurus', 'gemini', 20],
['gemini', 'cancer', 20], ['cancer', 'leo', 22],
['leo', 'virgo', 22], ['virgo', 'libra', 22],
['libra', 'scorpio', 22],
['scorpio', 'sagittarius', 21],
['sagittarius', 'capricorn', 21]]
if day <= western_zodiac[month - 1][2]:
return western_zodiac[month - 1][0]
return western_zodiac[month - 1][1]
def find_remainder(year):
year_help = year - 1900
return year_help % 12
def interpret_chinese_sign(year):
chinese_zodiac = ['rat', 'ox', 'tiger', 'rabbit', 'dragon',
'snake', 'horse', 'sheep', 'monkey',
'rooster', 'dog', 'pig']
return chinese_zodiac[find_remainder(year)]
def interpret_both_signs(day, month, year):
western_sign = interpret_western_sign(day, month)
chinese_sign = interpret_chinese_sign(year)
return (western_sign, chinese_sign)

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

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

OK

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

Цветан обнови решението на 07.03.2015 15:01 (преди над 9 години)

+def interpret_western_sign(day, month):
+ options = [['capricorn', 'aquarius', 20], ['aquarius', 'pisces', 19], ['pisces', 'aries', 20], ['aries', 'taurus', 20], ['taurus', 'gemini', 20],
+ ['gemini', 'cancer', 20], ['cancer', 'leo', 22], ['leo', 'virgo', 22], ['virgo', 'libra', 22], ['libra', 'scorpio', 22], ['scorpio', 'sagittarius', 21],
+ ['sagittarius', 'capricorn', 21]]
+ if day <= options[month - 1][2]:
+ return options[month - 1][0]
+ return options[month - 1][1]
+
+def find_remainder(year):
+ year_help = year - 1900
+ return year_help % 12
+
+def interpret_chinese_sign(year):
+ options = {0 : 'rat', 1 : 'ox', 2 : 'tiger', 3 : 'rabbit', 4 : 'dragon', 5 : 'snake', 6 : 'horse', 7 : 'sheep', 8 : 'monkey', 9 : 'rooster', 10 : 'dog', 11 : 'pig'}
+ for code, name in options.items():
+ if code == find_remainder(year):
+ return name
+
+
+def interpret_both_signs(day, month, year):
+ western_sign = interpret_western_sign(day, month)
+ chinese_sign = interpret_chinese_sign(year)
+ return (western_sign, chinese_sign)
  • в Python се ползват 4 спейса идентация. В момента ползваш 8.
  • нека всички редове от решението станат под 79 символа дължина
  • отделяй глобално дефинираните функции с 2 празни реда, така както си направил с interpret_both_signs
  • речник с ключове последователни цели числа не ти ли напомня силно на един друг вид структура?
  • ако все пак решиш да ползваш речник, имай предвид че интервал се поставя само след :. Премахни интервалите пред двуеточията.
  • аз лично бих дал по дескриптивно име от options. Например chinese_zodiac и western_zodiac

Цветан обнови решението на 08.03.2015 14:45 (преди над 9 години)

def interpret_western_sign(day, month):
- options = [['capricorn', 'aquarius', 20], ['aquarius', 'pisces', 19], ['pisces', 'aries', 20], ['aries', 'taurus', 20], ['taurus', 'gemini', 20],
- ['gemini', 'cancer', 20], ['cancer', 'leo', 22], ['leo', 'virgo', 22], ['virgo', 'libra', 22], ['libra', 'scorpio', 22], ['scorpio', 'sagittarius', 21],
- ['sagittarius', 'capricorn', 21]]
- if day <= options[month - 1][2]:
- return options[month - 1][0]
- return options[month - 1][1]
+ western_zodiac = [['capricorn', 'aquarius', 20],
+ ['aquarius', 'pisces', 19], ['pisces', 'aries', 20],
+ ['aries', 'taurus', 20], ['taurus', 'gemini', 20],
+ ['gemini', 'cancer', 20], ['cancer', 'leo', 22],
+ ['leo', 'virgo', 22], ['virgo', 'libra', 22],
+ ['libra', 'scorpio', 22], ['scorpio', 'sagittarius', 21],
+ ['sagittarius', 'capricorn', 21]]
+ if day <= western_zodiac[month - 1][2]:
+ return western_zodiac[month - 1][0]
+ return western_zodiac[month - 1][1]
-def find_remainder(year):
- year_help = year - 1900
- return year_help % 12
+def find_remainder(year):
+ year_help = year - 1900
+ return year_help % 12
+
+
def interpret_chinese_sign(year):
- options = {0 : 'rat', 1 : 'ox', 2 : 'tiger', 3 : 'rabbit', 4 : 'dragon', 5 : 'snake', 6 : 'horse', 7 : 'sheep', 8 : 'monkey', 9 : 'rooster', 10 : 'dog', 11 : 'pig'}
- for code, name in options.items():
- if code == find_remainder(year):
- return name
+ chinese_zodiac = ['rat', 'ox', 'tiger', 'rabbit', 'dragon',
+ 'snake', 'horse', 'sheep', 'monkey', 'rooster', 'dog', 'pig']
+ return chinese_zodiac[find_remainder(year)]
def interpret_both_signs(day, month, year):
- western_sign = interpret_western_sign(day, month)
- chinese_sign = interpret_chinese_sign(year)
+ western_sign = interpret_western_sign(day, month)
- return (western_sign, chinese_sign)
+ chinese_sign = interpret_chinese_sign(year)
+ return (western_sign, chinese_sign)

Цветан обнови решението на 09.03.2015 23:25 (преди над 9 години)

def interpret_western_sign(day, month):
- western_zodiac = [['capricorn', 'aquarius', 20],
- ['aquarius', 'pisces', 19], ['pisces', 'aries', 20],
- ['aries', 'taurus', 20], ['taurus', 'gemini', 20],
- ['gemini', 'cancer', 20], ['cancer', 'leo', 22],
- ['leo', 'virgo', 22], ['virgo', 'libra', 22],
- ['libra', 'scorpio', 22], ['scorpio', 'sagittarius', 21],
- ['sagittarius', 'capricorn', 21]]
+ western_zodiac = [['capricorn', 'aquarius', 20],
+ ['aquarius', 'pisces', 19], ['pisces', 'aries', 20],
+ ['aries', 'taurus', 20], ['taurus', 'gemini', 20],
+ ['gemini', 'cancer', 20], ['cancer', 'leo', 22],
+ ['leo', 'virgo', 22], ['virgo', 'libra', 22],
+ ['libra', 'scorpio', 22],
+ ['scorpio', 'sagittarius', 21],
+ ['sagittarius', 'capricorn', 21]]
if day <= western_zodiac[month - 1][2]:
return western_zodiac[month - 1][0]
return western_zodiac[month - 1][1]
def find_remainder(year):
year_help = year - 1900
return year_help % 12
def interpret_chinese_sign(year):
- chinese_zodiac = ['rat', 'ox', 'tiger', 'rabbit', 'dragon',
- 'snake', 'horse', 'sheep', 'monkey', 'rooster', 'dog', 'pig']
+ chinese_zodiac = ['rat', 'ox', 'tiger', 'rabbit', 'dragon',
+ 'snake', 'horse', 'sheep', 'monkey',
+ 'rooster', 'dog', 'pig']
return chinese_zodiac[find_remainder(year)]
def interpret_both_signs(day, month, year):
western_sign = interpret_western_sign(day, month)
chinese_sign = interpret_chinese_sign(year)
- return (western_sign, chinese_sign)
+ return (western_sign, chinese_sign)