栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day03 | 跑步锻炼 | 真题代码解析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day03 | 跑步锻炼 | 真题代码解析

作者简介:大家好,我是车神哥,府学路18号的车神磊
⚡about—>车神:从寝室到实验室最快3分钟,最慢3分半(那半分钟其实是等绿
个人主页:应无所住而生其心的博客_府学路18号车神_CSDN博客
磊 官方认证:人工智能领域优质创作者
点赞评论收藏 == 养成习惯(一键三连)

⚡希望大家多多支持珞~一起加油 

专栏

《蓝桥杯-Python》


每天刷一道题,话不多说,先刷近两年的题吧,从2020的开始,如果有一起的可以加入我们!!!

一起来刷题,冲击国赛!!!


扫码 我的主页 网页左边 群二维码。

加入方式:可以在下方的微信名片加我,然后拉你入群。(记得备注暗号:我要拿国奖)


2020年第十一届蓝桥杯赛题总览

2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!

跑步锻炼(题目)

(本题总分:5分)


—>【问题描述】

小蓝每天都锻炼身体。

正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。

如果同时是周一或月初,小蓝也是跑2千米。

小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。

请问这段时间小蓝总共跑步多少千米?

—>【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


解析

通过阅读题干,本题——难度一般:⭐⭐

考察类型:枚举

考察知识点:datatime日期模块


分析:

由于是填空题,我们只需要得出一个结果即可。结果为一个整数。可以用枚举(简单易用,没毛病)。

首先,我们需要知道从“2000年1月1日周六(含)到2020年10月1日周四(含)”之间的日期,这就考到了基本操作(datatime模块),下面是保姆教程:

类名称描述
datetime.date表示日期,常用的属性有:year, month和day
datetime.time表示时间,常用属性有:hour, minute, second, microsecond
datetime.datetime表示日期时间
datetime.timedelta表示两个date、time、datetime实例之间的时间间隔,分辨率(最小单位)可达到微秒
datetime.tzinfo时区相关信息对象的抽象基类。它们由datetime和time类使用,以提供自定义时间的而调整。
datetime.timezonePython 3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量

需要说明的是:这些类的对象都是不可变的。

import datetime.datetime as d
对象方法/属性名称描述
d.year
d.mouth
d.day
d.replace(year[,mouth[, day]])生成并返回一个新的日期对象,原日期对象不变
d.timetuple()返回日期对应的time.struct_time对象
d.toordinal()返回日期是是自 0001-01-01 开始的第多少天
d.weekday()返回日期是星期几,[0, 6],0表示星期一
d.isoweekday()返回日期是星期几,[1, 7], 1表示星期一
d.isocalendar()返回一个元组,格式为:(year, weekday, isoweekday)
d.isoformat()返回‘YYYY-MM-DD’格式的日期字符串
d.strftime(format)返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同

类名太多了,不用全部掌握,哎!~

考试忘了怎么办?别急!!!

Ctrl+选择库名可看源模块的function~,或者用Python自带的帮助文档(doc),直接可以现场解忧!

现在回归题干,先得知约束条件:

    已知小蓝每天1km,周一or月初(1日),则改为2km。若同时为周一或月初,2km。(几乎没什么约束,只是提一句)日期:2000-1-1(周六)到2020-10-1(周四)——包含当日

我们需要导入日期库中的日期时间和时间间隔模块(datetime、timedelta),当我们获取了要求的日期参数后(start、end),设置daily = 1, stimulate = 2,res = 0(统计总共跑步),然后再遍历开始到结束的时间间隔,设置 while if 判断,满足条件一、条件二,最后循环遍历结束,得到最终的结果。


代码

Python代码实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/2/26 16:36
# @Author  : 府学路18号车神
# @Email   :yurz_control@163.com
# @File    : Day03.py


# datatime模块使用
from datetime import datetime, timedelta    # 导入日期时间和时间间隔

# dt = datetime.datetime(year=2000, month=1, day=3)       # 将需要查询的时间参数传入,返回时间格式的变量
#
# dt_td = datetime.timedelta(days=10)     # 返回参数对应的时间间隔,作用是可以进行时间加减
#
# dt_wk = datetime.datetime.today().weekday()     # 判断星期几,注意星期一返回0,星期二返回1,以此类推
#
# print(dt, dt_td, dt_wk)

"""
—————————————————————————————跑步锻炼———————————————————————————————
"""
start = datetime(2000, 1, 1)      # 初始化开始日期
end = datetime(2020, 10, 1)       # 初始化结尾日期

res = 0     # 设置计数器

daily = 1   # 平日跑 1km
stimulate = 2   # 励志跑 2km

# 遍历循环,枚举出所有,判断计数
while start <= end:     # 设置终止条件
    if start.day == 1 or start.weekday() == 0:      # 解释:如果满足月初(day)和周一(weekday)时,跑2km距离
        res += stimulate
    else:
        res += daily                                # 满足上条件以外则跑1km
    start += timedelta(1)   # 时间间隔加上 1 进行迭代

print("请问这段时间小蓝总共跑步多少千米?", res, "km")     # 8879km

由此,我们可以快速的出结果为:8879


今天开刷第三天,难度一般,欢迎大家加入,一起变强,一起自律,一起上国赛!!!

有不同解法的可以在下面留言哦!~

往期刷题路线:

刷题路线Detail
Day-01门牌制作
Day-02寻找2020

官方刷题练习系统:http://lx.lanqiao.cn/


❤坚持读Paper,坚持做笔记,坚持学习,坚持刷力扣LeetCode❤!!!
坚持刷题!!!冲击国赛
To Be No.1

⚡⚡


⚡创作不易⚡,过路能❤关注收藏点个赞❤三连就最好不过了

ღ( ´・ᴗ・` )

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号