问题描述
小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
解决方案
了解题意,对问题进行划分,特殊条件(周一和月初跑2千米),其他日子均跑1千米;日期范围是2000年1月1日到2020年10月1日。
细化条件,条件中带有周一和月初,那我们就要引用datetime。from datetime import这句代码是,添加引用datetime模块的意思 引用了模块就可以使用这个模块中的函数、数据类型、类等。
然后就是循环程序,通过日期,可以筛选出跑1千米和2千米的日子,然后将全部值进行求和。
接下来展示完整的代码。
from datetime import *
length = 0
day = timedelta(days = 1)
x1 = date(2000,1,1)
x2 = date(2020,10,1)
while x1 <= x2:
if x1.day==1 or x1.weekday()==0:
length += 2
else:
length += 1
x1 += day
print(length)
我们在程序中运行一下此代码。
图2.1
结语
本题目主要是通过日期来确定每天跑的路程求和运算,问题最容易出错的就是条件循环和引用datetime。