【Python CheckiO 题解】Days Between


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)
发布了149 篇原创文章 · 获赞 518 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/qq_36759224/article/details/103501033
今日推荐