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
微信扫码关注
抖音扫码关注