Теодора обнови решението на 10.03.2015 23:46 (преди над 9 години)
+western = [("capricorn", 20), ("aquarius", 18),
+ ("pisces", 20), ("aries", 20), ("taurus", 20),
+ ("gemini", 20), ("cancer", 22), ("leo", 22),
+ ("virgo", 22), ("libra", 22), ("scorpio", 21), ("sagittarius", 21)]
+
+chinese = [(1900, "rat"), (1901, "ox"), (1902, "tiger"), (1903, "rabbit"),
+ (1904, "dragon"), (1905, "snake"), (1906, "horse"), (1907, "sheep"),
+ (1908, "monkey"), (1909, "rooster"), (1910, "dog"), (1911, "pig")]
+
+
+def interpret_western_sign(day=3, month=4):
+ boundary = western[month - 1][1]
+ index = month
+ if day <= boundary:
+ index = month - 1
+ return western[index % 12][0]
+
+
+def interpret_chinese_sign(year):
+ for sign in chinese:
+ if (year - sign[0]) % 12 == 0:
+ return sign[1]
+
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day, month), interpret_chinese_sign(year))
- Сложността на
interpret_chinese_sign
ти еO(n)
, защото не си подбрал добре коя колекция да използваш за целта :) - Защо правиш това:
index = month
?