#26703: [Python]你有聽過str.maketrans嗎?那你知道他有三個參數可以用嗎?^_^


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
d351. 10878 - Decode the tape -- UVa10878 | From: [1.174.79.124] | 發表日期 : 2021-08-21 00:13

https://www.programiz.com/python-programming/methods/string/maketrans

 

 maketrans() 方法的語法如下:

string.maketrans(x[, y[, z]])

y 跟 z 可有可無

String maketrans() Parameters

maketrans() 方法 可以吃三個參數:

  • x - 如果只有單獨一個參數,必須是dictionary,並且dictionary必須一對一(1-to-1)對應。
  • y - 如果你輸入了兩個參數,x跟y兩者必須一樣長,並且每個字元會從x一一對應到y。
  • z - (重點!)如果你輸入三個參數,每個字元會對應到None,也就是''。

 

我的作法是:

str.maketrans('o ''10''|_.')
 
'o ' 對應到 '10'
'|_.'用不到,刪掉
 
接下來就可以將輸入全部讀進來,一次translate,換行沒有動到,讚!
給大家參考看看 :D
 
#26704: Re:[Python]你有聽過str.maketrans嗎?那你知道他有三個參數可以用嗎?^_^


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
d351. 10878 - Decode the tape -- UVa10878 | From: [1.174.79.124] | 發表日期 : 2021-08-21 00:26

 

 

哦,對了,因為二進位轉十進位,我是用int(..., base=2)轉的。 輸出的時候,一般可能會想使用chr(...),但是
如果使用 sys.stdout.buffer,可以輸出bytes,說到bytes便與int脫離不了關係
於是程式碼在寫的時候
sys.stdout.buffer.write(bytes(int(...) for ... in ...))
就不知不覺又變成一行了 wwww

 

 
ZeroJudge Forum