Решение на Астрологични забави от Виктория Терзиева

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

Към профила на Виктория Терзиева

Резултати

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

Код

from collections import OrderedDict
CHINESE_ZODIAC = ['monkey', 'rooster', 'dog', 'pig',
'rat', 'ox', 'tiger', 'rabbit',
'dragon', 'snake', 'horse', 'sheep']
def interpret_chinese_sign(year):
return(CHINESE_ZODIAC[year % 12])
def interpret_western_sign(day, month):
signs = {'aquarius': 219, 'pisces': 321, 'aries': 421, 'taurus': 521,
'gemini': 621, 'cancer': 723, 'leo': 823, 'virgo': 923,
'libra': 1023, 'scorpio': 1122, 'sagittarius': 1222}
signs = OrderedDict(sorted(signs.items(), key=lambda t: t[1]))
x = month*100 + day
for key, value in signs.items():
if x < value and x > 120:
return key
return 'capricorn'
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 версии и 4 коментара)

Виктория обнови решението на 10.03.2015 01:24 (преди над 9 години)

+import collections
+
+def interpret_chinese_sign(year):
+ arr = ['monkey', 'rooster', 'dog', 'pig',
+ 'rat', 'ox', 'tiger', 'rabbit',
+ 'dragon', 'snake', 'horse', 'sheep']
+ return(arr[year % 12])
+
+def interpret_western_sign(day, month):
+ signs = {'aquarius': 219, 'pisces': 321, 'aries': 421, 'taurus': 521,
+ 'gemini': 621, 'cancer': 723, 'leo': 823, 'virgo': 923,
+ 'libra': 1023, 'scorpio': 1122, 'sagittarius': 1222}
+ signs = collections.OrderedDict(sorted(signs.items(), key=lambda t: t[1]))
+ x = month*100 + day
+ for key, value in signs.items():
+ if x < value and x > 120:
+ return key
+ return 'capricorn'
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day, month), interpret_chinese_sign(year))
  • arr е лошо име на променлива. chinese_zodiac е по-добре. а CHINESE_ZODIAC като константа изнесено извън функцията е най.
  • ако ще ползваш само OrderedDict от collections може да напишеш from collections import OrderedDict (това може и да го знаеш, но just in case да го кажа)
  • готино е, че си видяла как се ползва и си го ползвала, но сигурна ли си че имаш нужда от OrderedDict въобще?
  • отделяй глобално дефинираните функции с 2 празни реда

Виктория обнови решението на 10.03.2015 20:27 (преди над 9 години)

-import collections
+from collections import OrderedDict
+
+CHINESE_ZODIAC = ['monkey', 'rooster', 'dog', 'pig',
+ 'rat', 'ox', 'tiger', 'rabbit',
+ 'dragon', 'snake', 'horse', 'sheep']
+
+
def interpret_chinese_sign(year):
- arr = ['monkey', 'rooster', 'dog', 'pig',
- 'rat', 'ox', 'tiger', 'rabbit',
- 'dragon', 'snake', 'horse', 'sheep']
- return(arr[year % 12])
-
+ return(CHINESE_ZODIAC[year % 12])
+
+
def interpret_western_sign(day, month):
signs = {'aquarius': 219, 'pisces': 321, 'aries': 421, 'taurus': 521,
'gemini': 621, 'cancer': 723, 'leo': 823, 'virgo': 923,
'libra': 1023, 'scorpio': 1122, 'sagittarius': 1222}
- signs = collections.OrderedDict(sorted(signs.items(), key=lambda t: t[1]))
+
+ signs = OrderedDict(sorted(signs.items(), key=lambda t: t[1]))
+
x = month*100 + day
+
for key, value in signs.items():
if x < value and x > 120:
return key
+
return 'capricorn'
-
+
+
def interpret_both_signs(day, month, year):
return (interpret_western_sign(day, month), interpret_chinese_sign(year))