【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}'
【Python CheckiO 题解】Time Converter (24h to 12h)相关推荐
- 【Python CheckiO 题解】Time Converter (12h to 24h)
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- Python CheckiO 题解系列 丨 博客目录索引
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...
- 【Python CheckiO 题解】Date and Time Converter
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Army Battles
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Largest Rectangle in a Histogram
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Roman Numerals
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Probably Dice
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Multicolored Lamp
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
- 【Python CheckiO 题解】Speech Module
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...
最新文章
- ***惯用的社会工程学手法
- mvn test BUILD FAILURE
- 1.9 编程基础之顺序查找 02 输出最高分数的学生姓名 python
- 关于Tomcat导致工程部分功能代码异常的问题
- 文本文件与二进制的区别
- 计算机组成原理习题集
- 说说我的专业计算机作文,说说我自己作文(精选11篇)
- 智能晾衣器全国产化电子元件推荐方案
- 478-82(56、128、718、129)
- 杰理之高低速(HSB/LSB)时钟硬件模块【篇】
- Android 在线PDF文件加载
- 等保三级核心-应用安全
- php账号登录验证手机号码,最完整的php验证手机号码
- 基于CentOs下的Hadoop完全分布式集群环境搭建
- 图书管理系统(Java语言)
- 图说卡尔曼滤波(正在进行时)
- 2019年CES中国企业走向世界,展会现场亮点纷呈
- bootstrap role属性
- 烟尘识别 python
- pandas删除重复数据
热门文章
- Scrapy--1安装和运行
- 人这辈子没法做太多的事情
- jquery智能提示
- 140. Word Break II
- [剑指offer][JAVA]面试题第[05]题[替换空格][StringBuilder/Buffer]
- access是不是计算机编程,access编程简介之二:用宏还是VBA?
- html5本地存储论坛,Web Storage--HTML5本地存储
- 删除苹果自带软件后果_苹果IOS备忘录便签软件敬业签恢复删除内容应该怎么操作?...
- Spring的使用——基础环境搭建以及IOC概念理解(持续更新)
- android webview权限申请_android - 在运行时向摄像机请求WebView权限 - 堆栈内存溢出...