a065: 提款卡密碼
他的密碼有 6 位數,所以他寫下了 7 個大寫字母,相鄰的每兩個字母間的「距離」就依序代表密碼中的一位數。所謂「距離」指的是從較「小」的字母要數幾個字母才能數到較「大」字母。字母的大小則是依其順序而定,越後面的字母越「大」。
假設文文所寫的 7 個字母是 POKEMON,那麼密碼的第一位數就是字母 P 和 O 的「距離」,由於 P 就是 O 的下一個字母,因此,從 O 開始只要往下數一個字母就是 P 了,所以密碼的第一位數就是 1。密碼的第二位數則是字母 O 和 K 的「距離」,從 K 開始,往下數 4 個字母 (L, M, N, O) 就到了 O,所以第二位數是 4,以此類推。因此,POKEMON 所代表的密碼便是 146821。
噓!你千萬別把這個密秘告訴別人哦,要不然文文的存款就不保了。
# Generate UPPERCASE Mapping
a2z = dict ([(chr(i+64),i) for i in range(1,27)])
# Generates :
# {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10,
# 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19,
# 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
print (a2z)
# print (abs(a2z.get('O') - a2z.get('K')))
print ('a065: 提款卡密碼')
pw=['']
while True:
try:
pw = list(input('輸入含有 7 個相連的大寫英文字母。, (q 或 Q為結束) --> '))
if pw[0] == 'q' or pw[0] == 'Q':
print('程式結束')
break
except:
print ("Invalid input 不合法輸入")
continue
print (pw)
s=''
for i in range (len(pw)-1):
a=int(a2z.get(pw[i]))
print(a,end='-')
b=int(a2z.get(pw[i+1]))
print(b,end='-')
print(abs(a-b))
s=s+str(abs(a-b))
print('文文的提款卡密碼-->',s)
>>> %Run a065.py
{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13, 'N': 14, 'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
a065: 提款卡密碼
輸入含有 7 個相連的大寫英文字母。, (q 或 Q為結束) --> POKEMON
['P', 'O', 'K', 'E', 'M', 'O', 'N']
16-15-1
15-11-4
11-5-6
5-13-8
13-15-2
15-14-1
文文的提款卡密碼--> 146821
輸入含有 7 個相連的大寫英文字母。, (q 或 Q為結束) --> TYPHOON
['T', 'Y', 'P', 'H', 'O', 'O', 'N']
20-25-5
25-16-9
16-8-8
8-15-7
15-15-0
15-14-1
文文的提款卡密碼--> 598701
輸入含有 7 個相連的大寫英文字母。, (q 或 Q為結束) --> q
程式結束
>>>
沒有留言:
張貼留言