這題目只要做字串轉換就好,但字典不是放在測資裡,而是放題目敘述裡,就是那兩個字串。
你固然可以靠人力一個一個去填,把內容一個一個的轉換目標字符,但這也太痛苦了,你得用肉眼一個一個去比較,還可能出錯,不建議你這麼搞。
你懶不懶我不知道,但我是很懶惰的,python 也知道有人很懶惰,於是 maketrans 誕生了。
要使用 maketrans ,直接使用 str.maketrans() 就能使用
它接受兩個相同長度的字串 a, b,並建立一個對照表,用來把 a 轉換成 b
例如這樣:
a = 'abcdef' |
簡單吧~
注意字串長度必須要一樣長就可以了
我們只需要將題目提供的兩組字串,複製、貼上,丟進去餵給它就可以
然後再利用另一個方法: str.translate()
讓需要翻譯的字串調用這個方法,並傳入剛剛建立的對照表,就可以得到正解了。
像這樣
a = 'abcdef' |
什麼是優雅?這就是!
當別人還在出賣勞力,用肉眼一一比較時,你只需要複製貼上就可以建好對照表了。
--
然而這題有一個小坑,題目提供的字典是有瑕疵的,需要抓出來特判
5 應轉換成 S
2 應轉換成 Z
所以我們需要針對此處修改一下我們的對照表,怎麼改呢?
其實 str.maketrans() 回傳的東西本質上就是 dict,所以 dict 所有的語法都能用在它上面
需要注意的是裡面保存的格式不能是字串,而是 unicode 編碼,修改時需要特別注意這點
a = 'abcdef' |
我用紅字標示的那一行就是修改的辦法
借助 ord() 轉換字串,就能用人類的語言輕鬆調整字典的內容了
當然,如果你會 ascii 編碼,你也可以直接填入數字。