2
此代碼旨在使用Vigenere密碼技術進行加密和解密,當我選擇加密並輸入我的關鍵字和文本時,結果是一次打印一組外來字符就像這樣的個人行: L Lo lou等等。另外,當我選擇解密時,打印結果是一個錯誤,指出'打印索引超出範圍'。這兩個錯誤我不知道如何解決,我會非常感激的任何幫助。Vigenere密碼Python給予外國字符而不是英文
#encryption
def encrypt():
crypt = ''
key_phrase = raw_input("Please enter a key phrase to encrypt by: ")
key_text = raw_input("Please enter a piece of text to encrypt: ")
if len(key_text) == 0:
print("Key must be of length 1 or more."); exit()
if not key_text.isalpha() or not key_phrase.isalpha():
print("Both text and key must be composed of letters only."); exit()
for letters in range(0, len(key_text)):
new = ord(key_text[letters]) + ord(key_text[letters%len(key_text)]) - 65
if new > 90:
new -= 26
crypt += chr(new)
print crypt
#decryption
def decrypt():
decrypt = ''
_key_phrase = raw_input("Please enter a key phrase to decrypt by: ")
_key_text = raw_input("Please enter a piece of text to include: ")
if len(_key_text) == 0:
print("Key must be of length 1 or more."); exit()
if not _key_text.isalpha() or not _key_phrase.isalpha():
print("Both text and key must be composed of letters only."); exit()
for letters in range(0, len(_key_text)):
new = ord(_key_phrase[letters]) - ord(_key_text[letters%len(_key_text)]) + 65
if new < 65:
new += 26
decrypt == chr(new)
print decrypt
#asking the user to enter a or b for en/decryption
choice = raw_input("Please enter either 'a' for encryption or 'b' for decryption: ")
if choice == 'a':
print encrypt()
else:
print decrypt()
在哪些行中得到這些錯誤? –
我不確定這是爲什麼我來這裏看看是否有人知道 –
你能不能請添加錯誤信息 –