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

网友投稿 855 2022-05-30

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

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

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

加入方式

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

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

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

跑步锻炼(题目)

(本题总分:5分)

—>

【问题描述】

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

小蓝每天都锻炼身体。

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

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

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

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

—>

【答案提交】

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

解析

通过阅读题干,本题——

难度一般:⭐⭐

考察类型:枚举

考察知识点:datatime日期模块

分析:

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

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

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

import datetime.datetime as d

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

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

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

Python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CC2530(zigbee)入门开发: 定时器使用实例
下一篇:【技术方案分享】华为云OBS&RDS开发实战-java版(下篇)
相关文章