无法将int转换为str

时间:2013-05-06 16:10:42

标签: python string int

我正在为计算机科学课创建一个项目,我在其中创建一个堆叠密码。我正在使用副本到剪贴板功能,以允许下一个密码更改消息。我遇到了第二个密码的问题,这是一个替换密码。当我运行它时,它会返回一个"无法转换' int'严格地说#34;我尝试过使用str(消息),但这不起作用,我尝试更改代码。我对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

3 个答案:

答案 0 :(得分:2)

尝试

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

此异常告诉您它不愿意将整数转换为字符串,也就是说,它不愿意将"foo" + 1评估为"foo1"。为此,您必须显式转换为字符串。这是Python设计者一遍又一遍地做出的选择,支持显式过度隐式语义。

答案 1 :(得分:0)

所以,既然你不能隐式地这样做,那就明确地做吧!

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

答案 2 :(得分:0)

为我工作......我复制了你的代码并没有出现任何问题......你使用的是什么版本的Pyperclip,以及哪个版本的Python?