如何在Python中创建自定义日历和索引?

2024-06-26 02:17:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python创建一个自定义日历,仍然保持365天,但有六个月。我想要实现的是一个程序,用户在其中输入一个日期,例如2020年1月15日,程序将从创建的自定义日历中输出日期。到目前为止,我创建了自定义日历作为元组列表,如下所示:

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))]

下面的示例中,第一个自定义月是“Leo”,它有60天。但是我在每个月的日子里都遇到了问题。如何从这个元组列表中获取特定月份的特定日期?那么,我如何将其与公历格式(例如:1月15日)联系起来呢

我对编程非常陌生,因此任何帮助都将不胜感激!提前谢谢


Tags: 用户程序示例列表rangecalendar元组orion
2条回答

您当前可以访问特定月份的特定日期,如下所示

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)

获取从日期开始的一年的过去日期

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

然后使用一个简单的if来检查日期在365范围内的位置

相关问题 更多 >