【问题标题】:Can't convert int to str无法将 int 转换为 str
【发布时间】:2013-05-07 00:26:01
【问题描述】:

我正在为计算机科学课程创建一个项目,我在其中创建一个堆叠密码。我正在使用复制到剪贴板功能,以允许下一个密码更改消息。我遇到了第二个密码的问题,这是一个替换密码。当我运行它时,它返回“无法将'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

【问题讨论】:

    标签: python string int


    【解决方案1】:

    试试

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

    这个异常告诉你它不愿意将整数转换为字符串,也就是说,它不愿意将"foo" + 1评估为"foo1"。为此,您必须显式转换为字符串。这是 Python 设计者反复做出的选择,倾向于显式语义而不是隐式语义。

    【讨论】:

      【解决方案2】:

      所以,既然你不能隐式地做,那就显式地做吧!

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

      【讨论】:

        【解决方案3】:

        对我有用...我复制了您的代码,但没有出现任何问题...您使用什么版本的 Pyperclip,以及哪个版本的 Python?

        【讨论】:

          猜你喜欢
          • 2012-11-19
          • 2017-08-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多