# 题目描述 # 已知2024年1月1日是星期一, # 输入一个日期(格式YYYY-MM-DD,范围2024年内), # 判断该日期是星期几。
from _datetime import datetime def find_week(data): start_week=0 #根据题意,默认第一天为周一 know_week=datetime(2024,1,1) #根据题意,调用datetime,来初始化时间,年月日 input_week=datetime.strptime(data,"%Y-%m-%d") #输入一个日期(格式).strptime''''''''''''''''''''''''''''''''''''''''''''重要 day_=(input_week-know_week).days#相差多少天 week=(start_week+day_)%7#这是一个技巧 weeks=['星期一','星期二','星期三','星期四','星期五','星期六','星期天'] week_end=weeks[week] print(week_end) data=input() find_week(data)
这段代码实现了根据输入的 2024 年内日期判断是星期几的功能,涉及到以下几个重要的 Python 知识点:
1. 模块导入与 datetime
类
python
from _datetime import datetime
通常情况下,我们会使用 from datetime import datetime
来导入 datetime
类。datetime
类是 Python 标准库中用于处理日期和时间的强大工具,它可以表示一个具体的日期和时间点,包含年、月、日、时、分、秒等信息。通过这个类,我们可以方便地进行日期和时间的计算、格式化和解析。
2. 字符串解析为日期对象
python
input_week = datetime.strptime(data, "%Y-%m-%d")
strptime
是 datetime
类的一个方法,用于将字符串按照指定的格式解析为 datetime
对象。%Y
表示四位数的年份,%m
表示两位数的月份,%d
表示两位数的日期。通过这种方式,我们可以将用户输入的字符串日期转换为 Python 可以处理的日期对象,以便进行后续的计算。
3. 日期对象的初始化
python
know_week = datetime(2024, 1, 1)
这行代码使用 datetime
类的构造函数创建了一个具体的日期对象,表示 2024 年 1 月 1 日。通过指定年、月、日作为参数,我们可以精确地定义一个日期。
4. 日期对象的减法运算
python
day_ = (input_week - know_week).days
datetime
对象之间可以进行减法运算,得到的结果是一个 timedelta
对象,它表示两个日期或时间之间的差值。timedelta
对象有一个 days
属性,通过访问这个属性,我们可以得到两个日期之间相差的天数。
5. 取模运算
python
week = (start_week + day_) % 7
取模运算符 %
用于计算两个数相除的余数。在这个代码中,我们利用取模运算将相差的天数转换为星期几的索引。因为一周有 7 天,所以通过对总天数取模 7,我们可以得到一个 0 到 6 之间的整数,分别对应星期一到星期天。
6. 列表索引与元素访问
python
weeks = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
week_end = weeks[week]
列表是 Python 中常用的数据结构,用于存储多个元素。通过索引,我们可以访问列表中的特定元素。在这个代码中,我们使用前面计算得到的星期索引 week
来访问 weeks
列表中的元素,从而得到对应的星期几的名称。
7. 函数定义与调用
python
def find_week(data):
# 函数体
...
data = input()
find_week(data)
函数是 Python 中组织代码的一种方式,通过定义函数,我们可以将一段具有特定功能的代码封装起来,提高代码的复用性和可读性。在这个代码中,我们定义了一个名为 find_week
的函数,它接受一个日期字符串作为参数,并在函数内部完成日期到星期几的转换。然后,我们通过 input()
函数获取用户输入的日期,并调用 find_week
函数进行处理。
8. 用户输入处理
python
data = input()
input()
是 Python 内置函数,用于从标准输入(通常是键盘)读取用户输入的内容,并将其作为字符串返回。在这个代码中,我们使用 input()
函数获取用户输入的日期字符串,然后将其传递给 find_week
函数进行处理。
# 题目: # 输入一个字符串表示日期(格式YYYY-MM-DD),输出该日期是当年的第几天。 # 输入示例: # 2025-04-01 # 输出示例: # 91 # 提示:注意闰年判断。 # 根据日期来判断当天是当年的第几天 #判断是否是闰年:能被4整除,但不能被100整除或者能被400整除 from datetime import datetime#二话不说,直接调用第三方库 def find_day(t): input_day=datetime.strptime(t,'%Y-%m-%d') start_day=datetime(input_day.year,1,1)#记住,这个input_day.year,是提取input_day的年 main_day=(input_day-start_day).days+1 #记住这个是第几天,要+1,假如2024-1-2,那么是不是2024年的第二天。相减的话就是2-1=1,所以要加一天 print(main_day) t=input() find_day(t)
这段代码主要实现了根据输入的日期字符串(格式为 YYYY-MM-DD
)计算该日期是当年的第几天的功能,下面为你总结其中涉及的知识点:
1. 模块导入
python
from datetime import datetime
datetime
是 Python 标准库中的一个模块,它提供了处理日期和时间的类和方法。这里通过 from...import
语句从 datetime
模块中导入了 datetime
类,该类可用于表示一个具体的日期和时间。
2. 函数定义
python
def find_day(t):
# 函数体
...
使用 def
关键字定义了一个名为 find_day
的函数,该函数接受一个参数 t
,代表输入的日期字符串。函数内部封装了计算日期是当年第几天的逻辑。
3. 字符串解析为日期对象
python
input_day = datetime.strptime(t, '%Y-%m-%d')
strptime
是 datetime
类的一个类方法,用于将字符串按照指定的格式解析为 datetime
对象。%Y
表示四位数的年份,%m
表示两位数的月份,%d
表示两位数的日期。通过这种方式,可以将用户输入的字符串日期转换为 Python 可以处理的日期对象。
4. 日期对象的创建
python
start_day = datetime(input_day.year, 1, 1)
利用 datetime
类的构造函数创建了一个新的日期对象 start_day
,表示输入日期所在年份的 1 月 1 日。input_day.year
用于提取 input_day
日期对象中的年份信息。
5. 日期对象的减法运算
python
main_day = (input_day - start_day).days + 1
datetime
对象之间可以进行减法运算,结果是一个 timedelta
对象,它表示两个日期或时间之间的差值。timedelta
对象有一个 days
属性,通过访问该属性可以得到两个日期之间相差的天数。由于要计算的是该日期是当年的第几天,所以需要在差值的基础上加 1。
6. 输入输出处理
python
t = input()
find_day(t)
input()
是 Python 的内置函数,用于从标准输入(通常是键盘)读取用户输入的内容,并将其作为字符串返回。然后将这个字符串作为参数传递给 find_day
函数进行处理。在 find_day
函数内部,使用 print(main_day)
将计算结果输出到控制台。
7. 闰年处理
虽然代码中没有显式地进行闰年判断,但由于使用了 datetime
模块进行日期计算,该模块会自动处理闰年的情况,确保日期计算的准确性。例如,在计算 2 月 29 日与 1 月 1 日之间的天数时,会正确地考虑到闰年的 2 月有 29 天。