Рейхан обнови решението на 03.03.2013 22:50 (преди над 11 години)
+import sys
+
+horoscope_signs_dict = {1: {"first_sign": "Козирог", "second_sign": "Водолоей", "separator": 19},
+ 2: {"first_sign": "Водолоей", "second_sign": "Риби", "separator": 18},
+ 3: {"first_sign": "Риби", "second_sign": "Овен", "separator": 20},
+ 4: {"first_sign": "Овен", "second_sign": "Телец", "separator": 20},
+ 5: {"first_sign": "Телец", "second_sign": "Близнаци", "separator": 20},
+ 6: {"first_sign": "Близнаци", "second_sign": "Рак", "separator": 20},
+ 7: {"first_sign": "Рак", "second_sign": "Лъв", "separator": 21},
+ 8: {"first_sign": "Лъв", "second_sign": "Дева", "separator": 22},
+ 9: {"first_sign": "Дева", "second_sign": "Везни", "separator": 22},
+ 10: {"first_sign": "Везни", "second_sign": "Скорпион", "separator": 22},
+ 11: {"first_sign": "Скорпион", "second_sign": "Стрелец", "separator": 21},
+ 12: {"first_sign": "Стрелец", "second_sign": "Козирог", "separator": 21}}
+
+month_days_dict = {1: 31,
+ 2: 29,
+ 3: 31,
+ 4: 30,
+ 5: 31,
+ 6: 30,
+ 7: 31,
+ 8: 31,
+ 9: 30,
+ 10: 31,
+ 11: 30,
+ 12: 31}
+
+def is_valid_date(day, month):
+ if month < 1 or month > 12:
+ return False
+ elif day < 1 or day > month_days_dict[month]:
+ return False
+ else:
+ return True
+
+def what_is_my_sign(day, month):
+ if day <= horoscope_signs_dict[month]["separator"]:
+ return horoscope_signs_dict[month]["first_sign"]
+ else:
+ return horoscope_signs_dict[month]["second_sign"]
+
+if not len(sys.argv) == 3:
+ print("Въведете два аргумента: номерът на деня и месеца, в който сте родени")
+elif is_valid_date(int(sys.argv[1]), int(sys.argv[2])):
+ print(what_is_my_sign(int(sys.argv[1]), int(sys.argv[2])))
+else:
+ print("Невалидна дата")
Изрично ви казахме да не проверявате за невалиден input и очевидно ще вземаме точки ако го правите. Причината да го правим е наличието на подобни решения :)
Двата речника е добра идея да ги направиш константи, т.е. с имена в SCREAMING_SNAKE_CASE.