python小明每天坚持锻炼身体,正常情况下,小明每天跑2千米,如果是周一或者月初(1日),为了激励自己,他要跑4千米;若同时是周一和月初,小明也是跑4千米。小明跑步已经坚持了很长时间。 请编程实现:输入开始时间的年、月、日和结束时间的年、月、日(范围:2000年1月1日——2023年3月20日。计算跑步数,包含开始、结束这两天的数据),输出在该时间段内小明跑步的千米数,若输入的年、月、日有误,则输出Data Error。
时间: 2024-02-22 08:58:41 浏览: 98
可以使用 datetime 模块来处理日期,以下是可以实现的代码:
```python
from datetime import date, timedelta
# 输入开始时间和结束时间的年月日
try:
start_year, start_month, start_day = map(int, input("请输入开始时间(年 月 日,空格隔开):").split())
end_year, end_month, end_day = map(int, input("请输入结束时间(年 月 日,空格隔开):").split())
start_date = date(start_year, start_month, start_day)
end_date = date(end_year, end_month, end_day)
except ValueError:
print("Data Error")
exit()
# 计算跑步数
total_km = 0
day_count = (end_date - start_date).days + 1 # 包含开始和结束日期
for i in range(day_count):
current_date = start_date + timedelta(days=i)
if current_date.day == 1 or current_date.weekday() == 0:
total_km += 4
else:
total_km += 2
print(f"在该时间段内小明跑步的千米数为:{total_km}千米")
```
首先,我们先输入开始时间和结束时间的年月日,并使用 `datetime.date()` 函数创建对应的日期对象。如果输入的年月日有误,会输出 "Data Error" 并退出程序。
接下来,我们计算跑步数。使用 `(end_date - start_date).days + 1` 计算日期范围内的总天数,并使用 `datetime.timedelta()` 函数来计算每一天的日期对象。然后,我们判断当前日期是否为月初或周一,分别累加每天的跑步数,最后输出总跑步数。
注意,题目中要求包含开始日期和结束日期的跑步数,因此我们计算日期范围内的总天数时需要加 1。
阅读全文