题目一
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。
输入为三个整数:day
、month
和 year
,分别表示日、月、年。
您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
。
示例 1:
输入:day = 31, month = 8, year = 2019 输出:"Saturday"
示例 2:
输入:day = 18, month = 7, year = 1999 输出:"Sunday"
示例 3:
输入:day = 15, month = 8, year = 1993 输出:"Sunday"
提示:
- 给出的日期一定是在
1971
到2100
年之间的有效日期。 - 划重点:会使用datetime模块表示时间,利用date.weekday()确定星期几的索引,并对应到创建的文字列表中
-
from datetime import datetime #导入datetime模块,一个python中表示时间的类 class Solution: def day_of_week(self,day, month, year): # 创建一个datetime对象 date = datetime(year, month, day)#这个是固定格式,必须写成year,month,day # 使用weekday()方法获取星期几的整数表示(0=星期一,1=星期二,...,6=星期日) # 但为了与题目要求的顺序一致,我们需要将结果转换(0=星期日,1=星期一,...,6=星期六) weekday_index = date.weekday() # 创建一个星期几的列表,按照题目要求的顺序 weekdays = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday","Sunday"] # 返回对应的星期几名称 return weekdays[weekday_index] #直接使用weekdays_index作为索引从weekdays中获取对应的星期几名称 # 示例 solution=Solution() print(solution.day_of_week(31,7,2024)) # 输出:"Saturday"
题目2
给你一个字符串 date
,按 YYYY-MM-DD
格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
示例 1:
输入:date = "2019-01-09" 输出:9 解释:给定日期是2019年的第九天。
示例 2:
输入:date = "2019-02-10" 输出:41
划重点:1.使用字符串分割(split)
2.了解datetime的timetuple方法以及tm_yday表示一年中的第几天
3.字符串不用额外定义,可以直接处理,list也可以之间查找不用遍历(命名时最好不用list,str,防止覆盖)
-
from datetime import datetime class Solution: #对字符串的处理,分隔符? def func_1(self,date_str): # date=str#字符串不用额外定义啦 list1=date_str.split("-") # for i in list1: year=int(list1[0]) month=int(list1[1]) day=int(list1[2])#都转化为整数 date=datetime(year, month, day) year_index=date.timetuple()#重点要知道这个方法 return year_index.tm_yday#这个方法的tm_yday表示一年中的第几天 solution=Solution() date1="2019-01-10" print(solution.func_1(date1))
timetuple方法
-
timetuple()
方法是 Pythondatetime
模块中datetime
类的一个方法,它用于将datetime
对象转换为一个与 Python 标准库中的time
模块兼容的time.struct_time
对象。这个time.struct_time
对象是一个命名元组,包含了表示日期和时间的各个组成部分的整数属性。方法签名
python复制代码
datetime.timetuple()
返回值
该方法返回一个
time.struct_time
对象,其包含以下属性: tm_year
(年份,例如 2023)tm_mon
(月份,范围从 1 到 12)tm_mday
(月份中的天数,范围从 1 到 31)tm_hour
(小时,范围从 0 到 23)tm_min
(分钟,范围从 0 到 59)tm_sec
(秒,范围从 0 到 61;注意,这里可以包含闰秒)tm_wday
(星期几,范围从 0 到 6,其中 0 表示星期一)tm_yday
(一年中的第几天,范围从 1 到 366)tm_isdst
(是否为夏令时,通常可以忽略,因为它在datetime
对象中不存储)- (做一道题学点知识,又进步了呢,加油加油,我要从废柴逆袭了)