a065: 提款卡密碼
這篇教學會示範 ZeroJudge 基礎題庫「a065: 提款卡密碼」的解題過程。
題目需求
文文記性不太好,只好把密碼寫在提款卡上免得忘記,為了避免密碼外流,他決定以一個只有他看得懂的方式把密碼寫下來。
假設文文所寫的 7 個字母是 POKEMON,那麼密碼的第一位數就是字母 P 和 O 的「距離」,由於 P 就是 O 的下一個字母,因此,從 O 開始只要往下數一個字母就是 P 了,所以密碼的第一位數就是 1。密碼的第二位數則是字母 O 和 K 的「距離」,從 K 開始,往下數 4 個字母 (L, M, N, O) 就到了 O,所以第二位數是 4,以此類推。因此,POKEMON 所代表的密碼便是 146821。
題目連結:a065: 提款卡密碼
解答
使用 for 迴圈與 range 搭配,將密碼的字母依序取出,透過 ord 轉換為 Unicode 字元,讓兩個字母的 Unicode 字元相減 ( 使用 abs 絕對值 ),就會得到正確的密碼。
while True:
try:
text = list(input()) # 將輸入的文字轉換成串列
# 依序取出串列中每個字 ( 因為內容計算時會使用 i+1,所以此處使用 -1 )
for i in range(len(text)-1):
print(f'{abs(ord(text[i+1]) - ord(text[i]))}',end='') # 計算出密碼
print()
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~