Ирина обнови решението на 07.03.2015 23:09 (преди над 9 години)
+def interpret_western_sign(day, month):
+
+ signs = ['capricorn', 'aquarius', 'pisces', 'aries', 'taurus', 'gemini',
+ 'cancer', 'leo', 'virgo', 'libra', 'scorpio', 'sagittarius',
+ 'capricorn']
+
+ months = {1: [20, 21], 2: [18, 19], 3: [20, 21], 4: [20, 21], 5: [20, 21],
+ 6: [20, 21], 7: [22, 23], 8: [22, 23], 9: [22, 23], 10: [22, 23],
+ 11: [21, 22], 12: [21, 22]}
+
+ if day <= months[month][0]:
+ return signs[month - 1]
+ else:
+ return signs[month]
+
+
+def interpret_chinese_sign(year):
+
+ signs = ['rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake',
+ 'horse', 'sheep', 'monkey', 'rooster', 'dog', 'pig']
+
+ years = [1900, 1901, 1902, 1903, 1904, 1905,
+ 1906, 1907, 1908, 1909, 1910, 1911]
+
+ if year < years[0]:
+ while True:
+ if year in years:
+ sign = year % 100
+ break
+ year += 12
+ else:
+ while True:
+ if year in years:
+ sign = year % 100
+ break
+ year -= 12
+
+ return signs[sign]
+
+
+def interpret_both_signs(day, month, year):
+
+ western = interpret_western_sign(day, month)
+ chinese = interpret_chinese_sign(year)
+
+ return (western, chinese)
Хм, цикъла ти в interpret_chinese_sign
е много бавен начин да намериш годината. Я пробвай да изпълниш interpret_chinese_sign(42 ** 100)
. Това си е съвсем реална година в бъдещето. Колко време работи функцията ти? Часове, дни? За да те насоча - замисли се за деление с остатък.