1

私は GCSE Computing を始めて数週間で、現在 9 年目です。今日、私たちは単純な暗号化プログラムであるプログラムを経験しました。そこまでは正直わかりませんでした。経験豊富な python プログラマーは、このコードを簡単に説明してもらえますか?

ところで-私が理解しているコードの断片にコメントを付けました。

message = str(input("Enter message you want to encrypt: ")) #understand
ciphered_msg = str() #understand
i = int() #understand
j = int() #understand
n = int(3)

for i in range(n):
    for j in range(i, len(message), n):
        ciphered_msg = ciphered_msg + message[j]

print(ciphered_msg) #understand

Python の知識をもう少し増やして、試験で A* を取得したいので、これを手伝ってください。

for ループがどのように機能するかは知っていますが、これがどのように機能するかはわかりません。

ありがとう!

4

1 に答える 1

3

これらの行は非 Pythonic であり、これを行うべきではありません:

ciphered_msg = str()
i = int()
j = int()
n = int(3)

代わりにこれを行います。これは完全に同等のコードですが、より単純で明確です。

ciphered_msg = ""
i = 0 # unnecessary, the i variable gets reassigned in the loop, delete this line
j = 0 # unnecessary, the j variable gets reassigned in the loop, delete this line
n = 3

ループは次のことを行っています: で始まり、0最後12、メッセージの長さの 3 つおきのインデックスを取り、配列内の対応する位置にアクセスし、その位置に文字を追加し、結果を変数messageに蓄積します。ciphered_msgたとえば、messageが length の場合5、 のインデックスは次のmessage順序でアクセスされます。

0 3 1 4 2

したがって、基本的に入力の文字をスクランブルしています。messageたとえば、入力がabcdeの場合、出力は になりますadbec。これは非常に弱い暗号であり、文字を転置しているだけです。

# input
0 1 2 3 4 # original indexes
a b c d e # `message` variable

# output
0 3 1 4 2 # scrambled indexes
a d b e c # `ciphered_msg` variable
于 2013-09-30T16:12:25.133 に答える