題解|ZeroJudge e578. 10222 - Decode the Mad man

【題目】e578. 10222 - Decode the Mad man

題解

e578.py
1
2
3
4
5
6
7
8
9
while True:
d={" ":" ","e":"q","r":"w","t":"e","y":"r","u":"t","i":"y","o":"u","p":"i","[":"o","]":"p","\\":"[","d":"a","f":"s","g":"d","h":"f","j":"g","k":"h","l":"j",";":"k","'":"l","c":"z","v":"x","b":"c","n":"v","m":"b",",":"n",".":"m","/":",","2":"`","3":"1","4":"2","5":"3","6":"4","7":"5","8":"6","9":"7","0":"8","-":"9","=":"0"}
try:
n=list(input())
for i in range(len(n)):
print(d.get(n[i]),end="")
print()
except EOFError:
break;

解說

首先我們可以先看向題目的【輸出說明】,這裡我們可以注意到一句話:

只要把每個字母或符號以鍵盤上它左邊第二個鍵的符號來取代就行了。

所以,在寫這題時,我的第一個動作是先建立一個字典d,裡面放的是QWERTY鍵盤字母左移兩個鍵之後的結果。
注意到【輸出說明】有說空白和換行直接輸出
之後,我們觀察範例輸入,可以發現輸入可能有多行資料,所以我們的程式寫法是直到EOF結束。
直到EOF結束的程式架構大概是這樣的:

1
2
3
4
5
while True:
try:
#code
except EOFError:
break

這個的意思是:
持續執行try裡面的程式,直到出現Except的情況(EOFError)。
接著,我們就可以寫try裡面的程式啦!
那這裡我們用d.get(n[i]),至於為什麼不是用d[n[i]],請見這篇文

FAQ

這裡的end是在控制print()的結尾,舉例:print("Hello World",end="&&"),輸出結果會是Hello World&&,在沒有另外設置end的情況下,print()的預設end'\n',也就是換行,這就是為什麼執行以下程式碼:

1
2
print("Hello")
print("World")

的結果是

1
2
Hello
World

結語

以上就是本題題解,倘若有誤或是對於解題仍有疑問,歡迎於底下留言區留言。