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

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

Към профила на Добромир Иванов

Резултати

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

Код

def interpret_western_sign(day, month):
signs = {
'aquarius': range(121, 220),
'pisces': range(220, 321),
'aries': range(321, 421),
'taurus': range(421, 521),
'gemini': range(521, 621),
'cancer': range(621, 723),
'leo': range(723, 823),
'virgo': range(823, 923),
'libra': range(923, 1023),
'scorpio': range(1023, 1122),
'sagittarius': range(1122, 1222)
}
for sign, dates in signs.items():
if (month * 100 + day) in dates:
return sign
return 'capricorn'
def interpret_chinese_sign(year):
signs = [
'rat', 'ox', 'tiger',
'rabbit', 'dragon',
'snake', 'horse',
'sheep', 'monkey',
'rooster', 'dog', 'pig'
]
return signs[(year - 1900) % 12]
def interpret_both_signs(day, month, year):
return (interpret_western_sign(day, month), interpret_chinese_sign(year))

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

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

OK

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

Добромир обнови решението на 07.03.2015 13:44 (преди около 9 години)

+def interpret_western_sign(day, month):
+ signs = {
+ 'aquarius' : range(121, 220),
+ 'pisces' : range(220, 321),
+ 'aries' : range(321, 421),
+ 'taurus' : range(421, 521),
+ 'gemini' : range(521, 621),
+ 'cancer' : range(621, 723),
+ 'leo' : range(723, 823),
+ 'virgo' : range(823, 923),
+ 'libra' : range(923, 1023),
+ 'scorpio' : range(1023, 1122),
+ 'sagittarius': range(1122, 1222)
+ }
+
+ for sign, dates in signs.items():
+ if (month * 100 + day) in dates:
+ return sign
+ return 'capricorn'
+
+def interpret_chinese_sign(year):
+ signs = [
+ 'rat', 'ox', 'tiger',
+ 'rabbit', 'dragon',
+ 'snake', 'horse',
+ 'sheep', 'monkey',
+ 'rooster', 'dog', 'pig'
+ ]
+
+ return signs[(year - 1900) % 12]
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day, month), interpret_chinese_sign(year))

Това подраняване на :-ята в речника не е Python стил. Последния ред на signs от interpret_western_sign е по правилна PEP8 конвенция. (1 интервал след двуеточието, без интервал преди него когато сме в dict). Поправи останалите.

Също така в signs но този път от interpret_chinese_sign имаш празни интервали в края на някои редове. Като съвет - премахни ги, още по-добре, нагласи си едитора да ги изчиства автоматично.

Separate top-level functions with two blank lines

Доста ми харесва решението ти.

Добромир обнови решението на 07.03.2015 21:13 (преди около 9 години)

def interpret_western_sign(day, month):
signs = {
- 'aquarius' : range(121, 220),
- 'pisces' : range(220, 321),
- 'aries' : range(321, 421),
- 'taurus' : range(421, 521),
- 'gemini' : range(521, 621),
- 'cancer' : range(621, 723),
- 'leo' : range(723, 823),
- 'virgo' : range(823, 923),
- 'libra' : range(923, 1023),
- 'scorpio' : range(1023, 1122),
+ 'aquarius': range(121, 220),
+ 'pisces': range(220, 321),
+ 'aries': range(321, 421),
+ 'taurus': range(421, 521),
+ 'gemini': range(521, 621),
+ 'cancer': range(621, 723),
+ 'leo': range(723, 823),
+ 'virgo': range(823, 923),
+ 'libra': range(923, 1023),
+ 'scorpio': range(1023, 1122),
'sagittarius': range(1122, 1222)
}
for sign, dates in signs.items():
if (month * 100 + day) in dates:
return sign
return 'capricorn'
+
def interpret_chinese_sign(year):
signs = [
'rat', 'ox', 'tiger',
- 'rabbit', 'dragon',
- 'snake', 'horse',
+ 'rabbit', 'dragon',
+ 'snake', 'horse',
'sheep', 'monkey',
'rooster', 'dog', 'pig'
]
return signs[(year - 1900) % 12]
+
def interpret_both_signs(day, month, year):
return (interpret_western_sign(day, month), interpret_chinese_sign(year))