Клара обнови решението на 07.03.2015 00:41 (преди над 9 години)
+def interpret_chinese_sign(year):
+ sign = {'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 < 0):
+ return None
+ for name, Year in sign.items():
+ if((year - Year) % 12 == 0):
+ return name
+
+
+def interpret_western_sign(day, month):
+ sign = {1: [20, 'capricorn', 'aquarius'],
+ 2: [18, 'aquarius', 'pisces'],
+ 3: [20, 'pisces', 'aries'],
+ 4: [20, 'aries', 'taurus'],
+ 5: [20, 'taurus', 'gemini'],
+ 6: [20, 'gemini', 'cancer'],
+ 7: [22, 'cancer', 'leo'],
+ 8: [22, 'leo', 'virgo'],
+ 9: [22, 'virgo', 'libra'],
+ 10: [22, 'libra', 'scorpio'],
+ 11: [21, 'scorpio', 'sagittarius'],
+ 12: [21, 'sagittarius', 'capricorn']}
+ if(month < 1 and month > 12):
+ return None
+ if(day < 1 and day > 31):
+ return None
+ for Month, cond in sign.items():
+ if(Month == month):
+ if(day <= cond[0]):
+ return cond[1]
+ else:
+ return cond[2]
+
+
+def interpret_both_signs(day, month, year):
+ t = (interpret_western_sign(day, month), interpret_chinese_sign(year))
+ return t
Няма нужда да проверяваш коректността на входните данни, освен това проверката ти те пази от случай, в който едно число е едновременно от двете страни на интервал, което така или иначе е математически невъзможно да се случи. :)
Решението просто да изключиш годините по-малки от нула също не е много яко.