CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。
CheckiO 官网:https://checkio.org/
我的 CheckiO 主页:https://py.checkio.org/user/TRHX/
CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html
CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise
题目描述
【Days Between】:给定两个参数表示时间(年,月,日),求两个时间相差的天数,返回的值必须是正数或者 0。
【链接】:https://py.checkio.org/mission/days-diff/
【输入】:两个表示时间的参数,元组形式
【输出】:两个时间相差的天数,整数型
【范例】:
days_diff((1982, 4, 19), (1982, 4, 22)) == 3
days_diff((2014, 1, 1), (2014, 8, 27)) == 238
解题思路
利用 datetime
模块很容易实现
代码实现
import datetime
def days_diff(a, b):
date1 = datetime.date(a[0], a[1], a[2])
date2 = datetime.date(b[0], b[1], b[2])
return abs((date1-date2).days)
if __name__ == '__main__':
print("Example:")
print(days_diff((1982, 4, 19), (1982, 4, 22)))
# These "asserts" are used for self-checking and not for an auto-testing
assert days_diff((1982, 4, 19), (1982, 4, 22)) == 3
assert days_diff((2014, 1, 1), (2014, 8, 27)) == 238
assert days_diff((2014, 8, 27), (2014, 1, 1)) == 238
print("Coding complete? Click 'Check' to earn cool rewards!")
大神解答
大神解答 NO.1
from datetime import datetime
def days_diff(date1, date2):
return abs((datetime(*date1) - datetime(*date2)).days)
大神解答 NO.2
import datetime as d;days_diff=lambda a,b:abs((d.datetime(*a)-d.datetime(*b)).days)
大神解答 NO.3
from datetime import date
def days_diff(date1, date2):
d = date(*date2) - date(*date1)
return abs(d.days)