Десислава обнови решението на 11.03.2015 02:21 (преди над 9 години)
+from bisect import bisect
+
+
+def interpret_western_sign(day, month):
+ signs = (
+ 'capricorn', 'aquarius', 'pisces',
+ 'aries', 'taurus', 'gemini',
+ 'cancer', 'leo', 'virgo',
+ 'libra', 'scorpio', 'sagittarius', 'capricorn'
+ )
+ sign_limits = (
+ 121, 219, 321,
+ 421, 521, 621,
+ 723, 823, 923,
+ 1023, 1122, 1222, 1232
+ )
+ date = int(str(month) + '{:02d}'.format(day))
+ sign_index = bisect(sign_limits, date)
+ return signs[sign_index]
+
+
+def interpret_chinese_sign(year):
+ chinese_signs = (
+ 'monkey', 'rooster', 'dog', 'pig',
+ 'rat', 'ox', 'tiger', 'rabbit',
+ 'dragon', 'snake', 'horse', 'sheep'
+ )
+ sign_index = year % 12
+ return chinese_signs[sign_index]
+
+
+def interpret_both_signs(day, month, year):
+ return (interpret_western_sign(day, month), interpret_chinese_sign(year))
-
date
може да го намериш много по-лесно без изобщо да минаваш през стрингове, а само с аритметични операции - променливата
sign_index
е излишна, използваш я само на едно място, а и не си прескочила 79 символа :)