日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2023/12/10 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。