Ивелина обнови решението на 10.03.2015 00:53 (преди над 9 години)
+def interpret_western_sign(day, month):
+ sign_name = ""
+ signs = {'capricorn': (1, 21), 'aquarius': (2, 19), 'pisces': (3, 21), 'aries': (4, 21),
+ 'taurus': (5, 21), 'gemini': (6, 21), 'cancer': (7, 23), 'leo': (8, 23), 'virgo': (9, 23),
+ 'libra': (10, 23), 'scorpio': (11, 22), 'sagittarius': (12, 22)}
+ for sign, values in signs.items():
+ if values[0] == month:
+ if values[1] <= day:
+ new_month = values[0]
+ if values[0] == 12:
+ new_month = 1
+ else:
+ new_month += 1
+ sign_name = interpret_western_sign(1, new_month)
+ else:
+ sign_name = sign
+ return sign_name
+
+def interpret_chinese_sign(year):
+ sign_name = ""
+ signs = {'rat': 1900, 'ox': 1901, 'tiger': 1902, 'rabbit': 1903,
+ 'dragon': 1904, 'snake': 1905, 'horse': 1906, 'sheep': 1907, 'monkey': 1908,
+ 'rooster': 1909, 'dog': 1910, 'pig': 1911}
+ if year > 1911:
+ while year > 1911:
+ year -= 12
+ elif year < 1900:
+ while year < 1900:
+ year += 12
+ for sign, value in signs.items():
+ if value == year:
+ sign_name = sign
+ return sign_name
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day, month), interpret_chinese_sign(year))
- имаш редове над 79 символа, а не трябва
- отделяй глобално дефинираните функции с 2 празни реда
Лично аз бих се замислил за по-прост подход към проблема. Тези for
-ове с if
-ове с рекурсивни викания са доста доста трудни за проследяване. Изглежда да работи, но ако възникне проблем, ще бъде отстранен с многот пот и мисловна дейност. Но все пак, предала си работещо решение.