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


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 (24h to 12h)】:你更喜欢旧的12小时制。但是我们生活的现代世界宁愿使用24小时制,你可以在任何地方看到它。您的任务是按照以下规则将时间从24小时格式转换为12小时格式:输出格式应为“hh:mm a.m.”(中午前数小时)或“hh:mm p.m.”(中午后数小时);如果小时少于10小时,不要在之前写 “0”。例如:“9:05 am”

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

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

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

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

【范例】

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

解题思路

使用 time.strptime() 方法把原始的时间字符串按照 %H:%M(24小时制小时:分钟数)的格式解析为时间元组

使用 time.strftime() 方法接收时间元组,按照 %I:%M %p(12小时制小时:分钟数 本地AM或PM的等价符)的格式转换为可读字符串

经过以上两个步骤后,12:30 就会变成 12:30 PM,由于题目要求变成 12:30 p.m.,所以可以利用 split() 方法对字符串进行分割,将 PM 替换成 p.m.AM 替换成 a.m.

因为题目要求10点以前的,比如 09:00 要去掉前面的0,变成 9:00 a.m.,所以可以先将前面替换后的列表转换成字符串,再利用 list() 方法将字符串每一个字符作为一个元素转换成列表,此时,如果列表第一个元素为0,就将其替换掉就行了

代码实现

import timedef time_converter(init_time):init_time = time.strptime(init_time, '%H:%M')init_time = time.strftime('%I:%M %p', init_time)init_time = init_time.split(' ')if init_time[1] == 'PM':init_time[1] = 'p.m.'else:init_time[1] = 'a.m.'init_time = ' '.join(init_time)init_time = list(init_time)if init_time[0] == '0':init_time[0] = ''init_time = ''.join(init_time)return init_timeif __name__ == '__main__':print("Example:")print(time_converter('12:30'))# These "asserts" using only for self-checking and not necessary for auto-testingassert time_converter('12:30') == '12:30 p.m.'assert time_converter('09:00') == '9:00 a.m.'assert time_converter('23:15') == '11:15 p.m.'print("Coding complete? Click 'Check' to earn cool rewards!")

大神解答

大神解答 NO.1

def time_converter(time):h, m = map(int, time.split(':'))return f"{(h-1)%12+1}:{m:02d} {'ap'[h>11]}.m."

以 13:30 为例,首先将时间字符串进行分割

h = 13、m = 30

(h-1)%12+1 = (13-1)%12+1 = 1

这个 m:02d 可能比较难理解,这里表示指定了 m 的输出格式,02d 相当于 print 中的 02d%02d% 表示输出的数是两位数,不够两位数则补0,举例:

a = 3
b = 30
print('%02d' %a)
print('%02d' %b)
print('%03d' %a)
print('%03d' %b)

输出结果依次为:

03
30
003
030

后面一个表达式也是令人吃惊,'ap'[h>11]h>11 返回的结果为 True 或者 False,然后根据此结果来获取字符串 'ap' 的第0个或第1个元素,不愧是大神的代码,学到了!!!

大神解答 NO.2

def time_converter(time):h, m = map(int, time.split(':'))if h < 12:ampm = 'a.m.'else:ampm = 'p.m.'if h > 12:h -= 12elif h == 0:h = 12return '%d:%02d %s' % (h, m, ampm)

大神解答 NO.3

def time_converter(str_time):hours, minutes = map(int, str_time.split(':'))am_or_pm = ['a.m.', 'p.m.'][hours >= 12]return f'{(hours-1) % 12+1}:{minutes:02} {am_or_pm}'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SharePoint学习札记[2] — MOSS2007体系结构概述

熟悉微软Office产品线的人都知道&#xff0c;MOSS 2007的上一个版本SPS 2003的全称是 Office Sharepoint Portal Server&#xff0c;在新版本中&#xff0c;微软去掉了Portal一个词。从这个角度很清楚地看到微软对MOSS 2007的定位&#xff0c;是的&#xff0c;MOSS 已经不再仅仅…

【Python CheckiO 题解】Non-unique Elements

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Sort Array by Element Frequency

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SharePoint学习札记[3] — Office SharePoint Server 2007部署

MOSS的第一步就是部署啦!《0ffice SharePoint Server 2007部署图示指南》图文并茂的展示了OSS2007的部署过程。虽然并不难&#xff0c;但对MOSS还摸不清方向的人来说是个不错的指导。手册的作者没有署名&#xff0c;也查不到出自谁手&#xff0c;在这里对他的劳动成果表示感谢…

【Python CheckiO 题解】Flatten a List

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SharePoint学习札记[4] — 创建SharePoint站点

为减少创建SharePoint站点过程中的麻烦&#xff0c;先打开IIS管理器&#xff0c;将“默认站点”停止或删除。后面的创建过程中&#xff0c;创建向导会自动创建端口为80的网站。 现在将&#xff1a; 1. 创建两个Web应用程序。 2. 创建共享服务。 3. 创建…

【Python CheckiO 题解】Long Repeat

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SharePoint学习札记[5] — 设置匿名访问

设置网站的匿名访问一般有三种情况&#xff1a; 1. 创建Web应用程序时进行匿名访问设置。 2. 对已建立的网站进行匿名访问设置。 3. 对同一个网站分别设置验证访问和匿名访问。创建Web应用程序时进行匿名访问设置 新建Web应用程序时在“安全性配置”的“允许匿名访问”选…

【Python CheckiO 题解】Sun Angle

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

解决text-overflow: ellipsis;不生效的问题

按照text-overflow: ellipsis;使用规则&#xff0c;在标签样式中添加该属性未生效&#xff0c;例如&#xff1a; 写道 .text { text-overflow: ellipsis; } <div class"text">长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字长文字…

【Python CheckiO 题解】Bird Language

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

Python CheckiO 题解系列 丨 博客目录索引

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本题解系列主要记录自己在用 Python 闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 …

文带你深入了解 Redis 内存模型

前言 Redis是目前最火爆的内存数据库之一&#xff0c;通过在内存中读写数据&#xff0c;大大提高了读写速度&#xff0c;可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时&#xff0c;会接触Redis的5种对象类型&#xff08;字符串、哈希、列表、集合、有序集合…

【Python CheckiO 题解】Pawn Brotherhood

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Xs and Os Referee

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

c#多线程总结(纯干货)

线程基础 创建线程 static void Main(string[] args) {Thread t new Thread(PrintNumbers);t.Start();//线程开始执行PrintNumbers();Console.ReadKey(); }static void PrintNumbers() {Console.WriteLine("Starting...");for (int i 1; i < 10; i){Console.Wr…

Hexo 博客优化之实用功能添加系列(持续更新)

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 本文将讲述一些 Hexo 博客实用功能的添加&#xff0c;本文以作者 luuman 的 spfk 主题和作者 xaoxuu 的 Material X…

SharePoint关于publish page, WiKi page, Web part page区别

并非所有页面类型都相似 让我们来重新理解一下关于这三种页面的问题&#xff0c;自己找了很多文章并没有找到很好的介绍。 尽可能简单&#xff0c;SharePoint页面是您的用户内容显示的地方。您可以将其比喻成SharePoint站点的“脸和身体”。因此&#xff0c;当你访问SharePoi…

【Python CheckiO 题解】The Warriors

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Multiply (Intro)

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…