15. Знаки зодиака. (в коде есть строки из следующих тем: "строки, списки, словари, циклы").
Условие:
В гороскопах, наполняющих газеты и журналы, астрологи пытаются положение солнца в момент рождения человека как-то связать с его судьбой. Всего насчитывается 12 знаков зодиака, и все они приведены ниже:
- Козерог: 22 декабря – 19 января
- Водолей: 20 января – 18 февраля
- Рыбы: 19 февраля – 20 марта
- Овен: 21 марта – 19 апреля
- Телец: 20 апреля – 20 мая
- Близнецы: 21 мая – 20 июня
- Рак: 21 июня – 22 июля
- Лев: 23 июля – 22 августа
- Дева: 23 августа – 22 сентября
- Весы: 23 сентября – 22 октября
- Скорпион: 23 октября – 21 ноября
- Стрелец: 22 ноября – 21 декабря
Код:
GOROSKOP = {
"Козерог": "22.декабрь - 19.январь",
"Водолей": "20.январь - 18.февраль",
"Рыбы": "19.февраль - 20.март",
"Овен": "21.март - 19.апрель",
"Телец": "20.апрель - 20.май",
"Близнецы": "21.май - 20.июнь",
"Рак": "21.июнь - 22.июль",
"Лев": "23.июль - 22.август",
"Дева": "23.август - 22.сентябрь",
"Весы": "23.сентябрь - 22.октябрь",
"Скорпион": "23.октябрь - 21.ноябрь",
"Стрелец": "22.ноябрь - 21.декабрь"
}
# ввод данных от пользователя
month = input("%75s" % "Введите месяц (в формате: январь..июнь): ")
day = input("%75s" % "Введите день (в формате: 1 .. 10 .. 21): ")
# уменьшим элементы для поиска до двух знаков (ищем по введённому месяцу)
small = list()
for a, b in zip(GOROSKOP.keys(), GOROSKOP.values()):
if month in b:
small.append(tuple([b, a]))
# найдем искомый знак гороскопа
lenth = len(month)
if (small[0][0][3:(lenth+3)] == month) and int(day) >= int(small[0][0][0:2]):
print("%74s" % small[0][1])
elif (small[-1][0][3:(lenth+3)] == month) and int(day) >= int(small[-1][0][0:2]):
print("%74s" % small[-1][1])
elif (small[0][0][3:(lenth+3)] == month) and int(day) < int(small[0][0][0:2]):
print("%74s" % small[-1][1])
elif (small[-1][0][3:(lenth+3)] == month) and int(day) < int(small[-1][0][0:2]):
print("%74s" % small[0][1])