我正在为计算机科学课创建一个项目,我在其中创建一个堆叠密码。我正在使用副本到剪贴板功能,以允许下一个密码更改消息。我遇到了第二个密码的问题,这是一个替换密码。当我运行它时,它会返回一个"无法转换' 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
答案 0 :(得分:2)
尝试
ciphertext[col] += str(message[pointer])
此异常告诉您它不愿意将整数转换为字符串,也就是说,它不愿意将"foo" + 1
评估为"foo1"
。为此,您必须显式转换为字符串。这是Python设计者一遍又一遍地做出的选择,支持显式过度隐式语义。
答案 1 :(得分:0)
所以,既然你不能隐式地这样做,那就明确地做吧!
ciphertext[col] += str(message[pointer])
答案 2 :(得分:0)
为我工作......我复制了你的代码并没有出现任何问题......你使用的是什么版本的Pyperclip,以及哪个版本的Python?