一、题目描述
二、思路
1、使用datetime库中的方法可以很好的解决这个问题。
2、定义起始时间和结束时间,判断是否是周一或者是1号,结果res加上相应的里程数。
3、最后输出 res 即为本题答案。
三、代码实现
import datetime
start = datetime.date(2000, 1, 1)
end = datetime.date(2020, 10, 1)
res = 0
while start != end:
if start.isoweekday() == 1 or start.day == 1:
res += 2
else:
res += 1
start += datetime.timedelta(days=1)
print(res+2)
类似练习
题目:
思路:
1、使用datetime库设置初始时间和结束时间
2、分别定义年份、月份、日期。不用考闰年的情况,因为datetime库会自动识别。
3、分别求出年份的数位和 月份日期的数位和,进行比较
4、定义 结果ans 变量,通过循环满足条件的不断加一。
5、本题为填空题,最后直接打印结果即可。
代码实现:
import datetime
start = datetime.date(1900, 1, 1)
end = datetime.date(9999, 1, 1)
ans = 0
while start != end:
year = start.year
month = start.month
day = start.day
yy = (year // 1000) + (year // 10) % 10 + (year % 10) + (year // 100) % 10
mm = (month // 10) + (month % 10) + (day // 10) + (day % 10)
if yy == mm:
ans += 1
start += datetime.timedelta(days=1)
print(ans)
datetime库的使用方法
1、date类
import datetime
# 获取日期 创建对象
date_obj = datetime.date(2000, 3, 4)
# 读取时间
year = date_obj.year
month = date_obj.month
day = date_obj.day
# 时间的运算
tom = date_obj + datetime.timedelta(days=1)
yes = date_obj - datetime.timedelta(days=1)
print(tom)
print(yes)
2、判断某天是周几
import datetime
# 判断某天是周几 isoweekday()
start = datetime.date(2024, 4, 1)
end = datetime.date(2024, 4, 10)
res = 0
while start != end:
if start.isoweekday() == 2:
res += 1
print(start.day)
start += datetime.timedelta(days=1)
# print(res)
3. datetime.time
类
创建时间对象
time_obj = datetime.time(hour, minute, second, microsecond)
访问时间对象的属性
hour = time_obj.hour
minute = time_obj.minute
second = time_obj.second
microsecond = time_obj.microsecond
4. datetime.datetime
类
创建日期时间对象
datetime_obj = datetime.datetime(year, month, day, hour, minute, second, microsecond)
访问日期时间对象的属性
year = datetime_obj.year
month = datetime_obj.month
day = datetime_obj.day
hour = datetime_obj.hour
minute = datetime_obj.minute
second = datetime_obj.second
microsecond = datetime_obj.microsecond
日期时间运算
# 获取一天后的日期时间
one_day_later = datetime_obj + datetime.timedelta(days=1)
# 获取一小时后的日期时间
one_hour_later = datetime_obj + datetime.timedelta(hours=1)
5. datetime.timedelta
类
用于表示两个日期或时间之间的差值。
delta = datetime.timedelta(days=3, hours=2, minutes=1)
6. datetime.tzinfo
类
用于处理时区信息。通常,你会使用第三方库(如 pytz
)来处理时区,因为 datetime
库的 tzinfo
是一个非常基础且抽象的类。
7. 格式化日期和时间
使用 strftime
方法可以将日期和时间对象格式化为字符串。
formatted_date = date_obj.strftime("%Y-%m-%d")
formatted_datetime = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")
8. 从字符串解析日期和时间
使用 strptime
方法可以从字符串解析出日期和时间对象。
date_obj_from_str = datetime.date.strptime("2023-10-23", "%Y-%m-%d")
datetime_obj_from_str = datetime.datetime.strptime("2023-10-23 12:34:56", "%Y-%m-%d %H:%M:%S")
9. 当前日期和时间
now = datetime.datetime.now() # 获取当前日期和时间
today = datetime.date.today() # 获取当前日期
10.获取年份月份日期的数位
random库用于随机生成年份月份和日期,但是闰年2月29天需要注意一下。
datetime库用于创建对象,方便取用。
import datetime
import random
random_year = random.randint(1900, 9999)
random_month = random.randint(1, 12)
if random_month in [4, 6, 9, 11]:
max_day = 30
elif random_month == 2:
if (random_year % 4 == 0 and random_year % 100 != 0) or (random_year % 400 == 0):
max_day = 29 # 闰年
else:
max_day = 28 # 非闰年
else:
# 其他月份有31天
max_day = 31
random_day = random.randint(1, max_day)
# 随机生成日期
random_date = datetime.date(random_year, random_month, random_day)
print(random_date)
# 打印年份的数位
print(random_year // 1000)
print(random_year // 100 % 10)
print(random_year % 10)
print(random_year % 100 // 10)
# 打印月份的数位
print(random_month // 10)
print(random_month % 10)
# 打印日期的数位
print(random_day // 10)
print(random_day % 10)
后续还有什么使用方法我会继续添加的。