# a009 - 解碼器 ### 題目連結: [a009](https://zerojudge.tw/ShowProblem?problemid=a009) ### 題目解析 * 給定一個密碼字串,利用公式規則將整串文字轉換回原本的明碼字串 * 轉換公式如下: * 密碼字元 = 明碼字元 + K (K為一固定整數) ### 題目類型 輸出入練習/字串/字元處理/ASCII ### 範例測資解讀 * 輸入 * 密碼字串,長度不定,但為單行,包含數字、英文、空白、特殊符號字元 * 輸出 * 明碼字串,長度和字元內容與密碼相同 ### 其他注意事項 * 題目中的提示 cin.get(char), getline(cin, string) 為 C/C++ 語言之程式語法,在 Python 中不適用 ### 程式解析 * 首先處理輸入資料,由於是單行文字,因此可直接使用連續IPO框架 ``` python import sys for s in sys.stdin: ``` * 接著需要知道轉換的K值為何,由範例測資1和測資2可以推導得知K值為7 * 因此密碼轉換公式為: * ==密碼字元 = 明碼字元+K== * 若現在需要反推,則K值要用減的 * 字元如何相減? * 可以利用 [ASCII編碼](http://kevin.hwai.edu.tw/~kevin/material/JAVA/Sample2016/ASCII.htm) 的方式,將文字的字元,轉換為編碼的特定數值 * python中有兩個函式可以進行字元與數字之間的轉換 * ord(): 將字元轉換為數字 * chr(): 將數字轉換為字元 ### 完整程式碼 (僅供參考) ``` python=01 import sys for s in sys.stdin: data = list(s) for i in range(len(data)): t = ord(data[i]) print(chr(t-7), end='') print() ``` ###### tags: `基礎15題解` `APCS` `ZeroJudge`