Николай обнови решението на 03.03.2013 01:38 (преди над 11 години)
+def what_is_my_sign(day=1, month=1):
+ # sign information in form
+ # (sign_name, (start_month, start_day), (end_month, end_day))
+ sign_description = [
+ ('Овен', (3, 21), (4, 20)),
+ ('Телец', (4, 21), (5, 20)),
+ ('Близнаци', (5, 21), (6, 20)),
+ ('Рак', (6, 21), (7, 21)),
+ ('Лъв', (7, 22), (8, 22)),
+ ('Дева', (8, 23), (9, 22)),
+ ('Везни', (9, 23), (10, 22)),
+ ('Скорпион', (10, 23), (11, 21)),
+ ('Стрелец', (11, 22), (12, 21)),
+ ('Козирог', (12, 22), (1, 19)),
+ ('Водолей', (1, 20), (2, 18)),
+ ('Риби', (2, 19), (3, 20))
+ ]
+
+ for sign_name, start_date, end_date in sign_description:
+ if between_dates((month, day), start_date, end_date):
+ return sign_name
+
+
+def between_dates(date, start_date, end_date):
+ if start_date < end_date:
+ return start_date <= date and date <= end_date
+ else:
+ return start_date <= date or date <= end_date
Харесва ми че си изнесъл between_dates в отделна функция за да не стане if-a ти четириредов. Ако забравиш обаче за съществуването на месеци и използваш само дни от началото на годината тя няма да ти е нужна ;-)
Можеш да изнесеш константата извън функцията защото не е нужно да се декларира наново при всяко извикване.
PS: Нещо което не сме ви казвали е че за константи практиката е имената на променливите да са с главни букви.