【每日一題】備戰(zhàn)沖擊藍橋杯國賽——Python程序設(shè)計 | Day03 | 跑步鍛煉 | 真題代碼解析
每天刷一道題,話不多說,先刷近兩年的題吧,從2020的開始,如果有一起的可以加入我們!!!
一起來刷題,沖擊國賽!!!
掃碼 我的主頁 網(wǎng)頁左邊 群二維碼。
加入方式
:可以在下方的微信名片加我,然后拉你入群。(記得備注暗號:我要拿國獎)
2020年第十一屆藍橋杯賽題總覽
2020年的題就是這些,類型分為兩種,分別是結(jié)果填空和程序設(shè)計,我們每天刷一道題,省賽沒問題!
跑步鍛煉(題目)
(本題總分:5分)
—>
【問題描述】
小藍每天都鍛煉身體。
正常情況下,小藍每天跑1千米。如果某天是周一或者月初(1日),為了激勵自己,小藍要跑2千米。
如果同時是周一或月初,小藍也是跑2千米。
小藍跑步已經(jīng)堅持了很長時間,從2000年1月1日周六(含)到2020年10月1日周四(含)。
請問這段時間小藍總共跑步多少千米?
—>
【答案提交】
這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一 個整數(shù),在提交答案時只填寫這個整數(shù),填寫多余的內(nèi)容將無法得分。
解析
通過閱讀題干,本題——
難度一般:??
考察類型:枚舉
考察知識點:datatime日期模塊
分析:
由于是填空題,我們只需要得出一個結(jié)果即可。結(jié)果為一個整數(shù)。可以用枚舉(簡單易用,沒毛病)。
首先,我們需要知道從“2000年1月1日周六(含)到2020年10月1日周四(含)”之間的日期,這就考到了基本操作(datatime模塊),下面是保姆教程:
需要說明的是:這些類的對象都是不可變的。
import datetime.datetime as d
類名太多了,不用全部掌握,哎!~
考試忘了怎么辦?別急!!!
Ctrl+選擇庫名可看源模塊的function~,或者用Python自帶的幫助文檔(doc),直接可以現(xiàn)場解憂!
現(xiàn)在回歸題干,先得知約束條件:
已知小藍每天1km,周一or月初(1日),則改為2km。
若同時為周一或月初,2km。(幾乎沒什么約束,只是提一句)
日期:2000-1-1(周六)到2020-10-1(周四)——包含當日
我們需要導(dǎo)入日期庫中的日期時間和時間間隔模塊(datetime、timedelta),當我們獲取了要求的日期參數(shù)后(start、end),設(shè)置daily = 1, stimulate = 2,res = 0(統(tǒng)計總共跑步),然后再遍歷開始到結(jié)束的時間間隔,設(shè)置 while if 判斷,滿足條件一、條件二,最后循環(huán)遍歷結(jié)束,得到最終的結(jié)果。
代碼
Python代碼實現(xiàn):
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2022/2/26 16:36 # @Author : 府學(xué)路18號車神 # @Email :yurz_control@163.com # @File : Day03.py # datatime模塊使用 from datetime import datetime, timedelta # 導(dǎo)入日期時間和時間間隔 # dt = datetime.datetime(year=2000, month=1, day=3) # 將需要查詢的時間參數(shù)傳入,返回時間格式的變量 # # dt_td = datetime.timedelta(days=10) # 返回參數(shù)對應(yīng)的時間間隔,作用是可以進行時間加減 # # dt_wk = datetime.datetime.today().weekday() # 判斷星期幾,注意星期一返回0,星期二返回1,以此類推 # # print(dt, dt_td, dt_wk) """ —————————————————————————————跑步鍛煉——————————————————————————————— """ start = datetime(2000, 1, 1) # 初始化開始日期 end = datetime(2020, 10, 1) # 初始化結(jié)尾日期 res = 0 # 設(shè)置計數(shù)器 daily = 1 # 平日跑 1km stimulate = 2 # 勵志跑 2km # 遍歷循環(huán),枚舉出所有,判斷計數(shù) while start <= end: # 設(shè)置終止條件 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
由此,我們可以快速的出結(jié)果為:
8879
Python
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。