我收到此错误“TypeError:无法将'int'对象转换为str隐式”
plaintext= input("Enter the plaintext:")
length = len(plaintext)
print ("The length is:", length)
for i in range(0,(len(plaintext)-1)
E[i]= (15*plaintext[i]+20)%26;
print (E[i])
答案 0 :(得分:2)
plaintext
是一个字符串,plaintext[i]
也是如此。 15*plaintext[i]
将字符串相乘,并且您尝试将整数添加到+20
的字符串中。所以只是:
15*int(plaintext[i])+20 #if plaintext is a string of decimals, don't know what exactly you want
或者我猜你正在做类似加密的事情,这样你需要使用ord将单个字符串转换为整数并转换回它的反向 chr :
In [4]: text='abcd'
...: for ch in text:
...: print(chr((15*(ord(ch)-97)+20)%26+97), sep='', end='')
ujyn
答案 1 :(得分:2)
plaintext
是str
,因此plaintext[i]
也是一个字符串(一个字符)。将它乘以15,再次得到str
(15个字符)。如果您尝试向其添加20
,则解释程序会假定您要将20
转换为str
并将其附加到现有str
。但它并没有从int
隐式转换为str
,而是告诉你。
您可能希望使用类似
(15 * (ord(plaintext[i]) - ord('A')) + 20) % 26
你的问题并不清楚你的真实意图,所以我们不得不猜测。