【Python CheckiO 题解】Time Converter (12h to 24h)


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


题目描述

【Time Converter (12h to 24h)】:此题与 Time Converter (24h to 12h) 类似,不同的是原来是24小时制转12小时制,现在是12小时制转24小时制,输出格式应为“hh:mm”,如果输出小时数小于10,则在其前添加“0”,如:“09:05”。

【链接】https://py.checkio.org/mission/time-converter-12h-to-24h/

【输入】:12小时格式的时间(字符串)

【输出】:24小时制的时间(字符串)

【前提】:‘00:00’ <= time <= ‘23:59’

【范例】

time_converter('12:30 p.m.') == '12:30'
time_converter('9:00 a.m.') == '09:00'
time_converter('11:15 p.m.') == '23:15'

解题思路

利用时间模块 time 对字符串进行处理,由于模块不支持 a.m.p.m. 的解析,所以先用 replace() 方法将其替换成 AM 或者 PM

利用使用 time.strptime() 方法把原始的时间字符串按照 %I:%M %p(12小时制小时:分钟数 本地化的 AM 或 PM)的格式解析为时间元组

使用 time.strftime() 方法接收时间元组,按照 %H:%M(24小时制小时:分钟数)的格式转换为可读字符串

代码实现

import time


def time_converter(init_time):
    init_time = init_time.replace('a.m.', 'AM').replace('p.m.', 'PM')
    init_time = time.strptime(init_time, '%I:%M %p')
    init_time = time.strftime('%H:%M', init_time)
    return init_time


if __name__ == '__main__':
    print("Example:")
    print(time_converter('12:30 p.m.'))

    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert time_converter('12:30 p.m.') == '12:30'
    assert time_converter('9:00 a.m.') == '09:00'
    assert time_converter('11:15 p.m.') == '23:15'
    print("Coding complete? Click 'Check' to earn cool rewards!")

大神解答

大神解答 NO.1

def time_converter(time):
    h, m = map(int, time[:-5].split(':'))
    return f"{h % 12 + 12 * ('p' in time):02d}:{m:02d}"

大神解答 NO.2

import time

def time_converter(now):
    return time.strftime('%H:%M', time.strptime(now.replace('.', ''), '%I:%M %p'))

大神解答 NO.3

from time import strptime as p, strftime as f

time_converter = lambda t: f("%H:%M", p(t.replace('.', ''), "%I:%M %p"))
发布了145 篇原创文章 · 获赞 511 · 访问量 45万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览