1

スタック暗号を作成するコンピューター サイエンス クラスのプロジェクトを作成しています。次の暗号によってメッセージを変更できるようにするために、クリップボード関数へのコピーを使用しています。置換暗号である 2 番目の暗号で問題が発生しました。実行すると、「'int' を str に暗黙的に変換できません」というメッセージが返されます。str(message) を使用してみましたが、うまくいきません。コードを変更してみました。Pythonは苦手なので単純なエラーでしたら教えてください。これらのエラーを解決するにはどうすればよいですか。メッセージをリストに変更することを考えましたが、どうすればよいですか?

ここに私が使用しているコードがあります:

def main():
    myMessage = pyperclip.paste()
    myKey = 8
    ciphertext = encryptMessage(myKey, myMessage)
    print(ciphertext + '|')
    pyperclip.copy(ciphertext)
def encryptMessage(key, message):
    ciphertext = [''] * key
    str(ciphertext)
    for col in range(key):
        pointer = col
        while pointer < len(message):
            ciphertext[col] += message[pointer]
            pointer += key
    return ''.join(ciphertext)
    print(ciphertext)

そして、ここに私が受け取るエラーがあります:

Traceback (most recent call last):
  File "I:\project\transpositionEncrypt.py", line 38, in <module>
    Enc()
  File "I:\project\transpositionEncrypt.py", line 37, in Enc
    main()
  File "I:\project\transpositionEncrypt.py", line 10, in main
    ciphertext = encryptMessage(myKey, myMessage)
  File "I:\project\transpositionEncrypt.py", line 27, in encryptMessage
    ciphertext[col] += message[pointer]
TypeError: Can't convert 'int' object to str implicitly
4

3 に答える 3

2

試す

ciphertext[col] += str(message[pointer])

この例外は、整数を文字列に変換しようとしない、つまり"foo" + 1として評価しようとしないことを示してい"foo1"ます。そのためには、明示的に文字列に変換する必要があります。これは、Python の設計者が繰り返し行う選択であり、暗黙的なセマンティクスよりも明示的なセマンティクスを優先します。

于 2013-05-06T16:13:24.030 に答える
0

したがって、暗黙的に行うことはできないため、明示的に行います。

ciphertext[col] += str(message[pointer])
于 2013-05-06T16:13:43.890 に答える