备战蓝桥杯Day40 - 第11届python组真题 - C跑步锻炼

一、题目描述

二、思路

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)

后续还有什么使用方法我会继续添加的。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值