Как создать собственный календарь и проиндексировать его в Python? - PullRequest
0 голосов
/ 16 января 2020

Я хочу создать собственный календарь в python, все еще поддерживает 365 дней, но имеет шесть месяцев. Чего я хочу добиться - программы, в которой пользователь вводит дату, например 15.01.2020, и программа выводит дату из созданного пользовательского календаря. До сих пор я создавал пользовательский календарь в виде списка кортежей, подобных следующему:

Calendar = [("Leo", range(1, 61)), 
                ("Gemini", range(1, 62)), 
                ("Pegasus", range(1, 62)),
                ("Orion", range(1, 62)),
                ("Scorpius", range(1, 62)),
                ("Taurus", range(1, 62))]

Следуя примеру, первым настраиваемым месяцем будет «Лев», и в нем будет 60 дней. Но я сталкиваюсь с проблемами, повторяющимися по дням для каждого месяца. Как я могу получить указанный c день указанного c месяца из этого списка кортежей? И затем, как я могу связать это с форматом григорианского календаря (например, 15 января).

Я очень новичок в программировании, поэтому любая помощь будет благодарна! Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 января 2020

В настоящее время вы можете получить доступ к указанному c дню указанного c месяца, например:

wanted_month = 'Orion'
wanted_day = 6

for month, days in calendar:           # python allows you to unpack tuples using commas
    if month == wanted_month:
        return month[wanted_day + 1]   # indexes are zero based and your ranges start at 1 so we have to add

Это может быть более производительным и простым, если вы преобразуете кортежи в словарь

calendar = {'leo': range(1,61), 'orion': range(61,122)}

calendar[wanted_month][wanted_day + 1]

Вы можете легко преобразовать его в обычный календарный день, если знаете, какой это день года. Поэтому, если вы хотите 300-й день в году, вы можете сделать это.

import datetime
datetime.datetime(datetime.datetime.now().year, 1, 1) + datetime.timedelta(300 - 1)
0 голосов
/ 16 января 2020

Получите дни, прошедшие с начала года с даты

from datetime import datetime
day_of_year = datetime.now().timetuple().tm_yday

Затем используйте простое if, чтобы проверить, где день находится в диапазоне 365.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...