from random import shuffle
alphabet="abcdefghijklmnopqrstuvwxyz"
def substitution(alphabet,plaintext):
# Create array to use to randomise alphabet position
randarray=range(0,len(alphabet))
shuffle(randarray)
key="Zebra"
#Create our substitution dictionary
dic={}
for i in range(0,len(alphabet)):
key+=alphabet[randarray[i]]
dic[alphabet[i]]=alphabet[randarray[i]]
#Convert each letter of plaintext to the corrsponding
#encrypted letter in our dictionary creating the cryptext
ciphertext=""
for l in plaintext:
if l in dic:
l=dic[l]
ciphertext+=l
for i in alphabet:
print i,
print
for i in key:
print i,
print
return ciphertext,key
# This function decodes the ciphertext using the key and creating
# the reverse of the dictionary created in substitution to retrieve
# the plaintext again
def decode(alphabet,ciphertext,key):
dic={}
for i in range(0,len(key)):
dic[key[i]]=alphabet[i]
plaintext=""
for l in ciphertext:
if l in dic:
l=dic[l]
plaintext+=l
return plaintext
# Example useage
plaintext="the cat sat on the mat"
ciphertext,key=substitution(alphabet,plaintext)
print "Key: ", key
print "Plaintext:", plaintext
print "Cipertext:", ciphertext
print "Decoded :", decode(alphabet,ciphertext,key)
當我運行這段代碼時,它返回一個"IndexError: String index out of range"
錯誤。有人能幫我解決問題,我看不出問題所在。程序返回一個「IndexError:字符串索引超出範圍」。
Traceback (most recent call last): File"/Users/Devlin/Desktop/Dev/Python/Substitution Cypher.py", line 57, in print "Decoded :", decode(alphabet,ciphertext,key) File "/Users/Devlin/Desktop/Dev/Python/Substitution Cypher.py", line 41, in decode dic[key[i]]=alphabet[i] IndexError: string index out of range
後確切的錯誤信息,其中包括行號和完整回溯。 – BrenBarn
'code'回溯(最近一次調用最後一次): print「Decoded:」,decode(alphabet,ciphertext,鍵) 解碼的文件「/ Users/Devlin/Desktop/Dev/Python/Substitute Cypher.py」,行41,解碼 dic [key [i]] = alphabet [i] IndexError:string index out of range'code ' – spoonless
也很高興突出語法,如果您已經必須使用pastebin ... – wasyl