2017-09-25 17 views
0

Caesar Cipherを使用してユーザー提供のプレーンテキストを暗号化する必要があります。各平文文字をASCII(整数)値に変換してリストに格納します。 私はこのCaesar Cipher in Python(予期しないエラー)

print("This program uses a Caesar Cipher to encrypt a plaintext message using the encryption key you provide.") 
plaintext = input("Enter the message to be encrypted:") 
plaintext = plaintext.upper() 
n = eval(input("Enter an integer for an encrytion key:")) 
ascii_list = [] 

# encipher 
ciphertext = "" 
for x in range(len(plaintext)): 
    ascii_list[x] = plaintext (ascii_list) + n %26 
    print() 

のように行っている。しかし、このようなエラーが表示されます。

TypeError: 'str' object is not callable 

私は結果が出て来てほしい:

This program uses a Caesar Cipher to encrypt a plaintext message using the encryption key you provide. 
Enter the message to be encrypted: Boiler Up Baby! 
Enter an integer for an encrytion key: 1868 
The fully encoded message is: CWOTFZ&]QCHICa' 

私は非常に多くの異なる方法を試してみましたが、結果は出てこない。

+3

'plaintext(ascii_list)は何をすると思いますか? –

答えて

1

最初の文字を数値に解析し、それらにキーを追加してから解析して文字に戻す必要があります。

コードにascii_list[x]は、存在しないインデックスを参照しているため、ascii_list.append()に変更する必要があります。また、plaintextはあなたが呼び出せる関数ではなく、最初の大文字のメッセージです。

あなたがこれを行うことができます:

for x in range(len(plaintext)): 
    ascii_list.append(chr(ord(plaintext[x]) + n)) 
print(ascii_list) 

注: 入力/出力(中:Boiler Up Baby!、アウト:CWOTFZ&]QCHICa')の文字の一部がシンボルに回すとあなたが提供する、典型的なシーザー暗号ではなく、シンボルも同様に符号化される。このソリューションを使用すると、キーがシフトされます。つまり、Zは決してAになりません。適切なシーザー暗号ソリューションが必要な場合は、この質問を参照してください。Caesar Cipher Function in Python

関連する問題