我收到此错误“TypeError:无法将'int'对象转换为str隐式”

时间:2014-02-11 02:27:22

标签: python python-3.x typeerror

我收到此错误“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])

2 个答案:

答案 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)

plaintextstr,因此plaintext[i]也是一个字符串(一个字符)。将它乘以15,再次得到str(15个字符)。如果您尝试向其添加20,则解释程序会假定您要将20转换为str并将其附加到现有str。但它并没有从int隐式转换为str,而是告诉你。

您可能希望使用类似

(15 * (ord(plaintext[i]) - ord('A')) + 20) % 26

你的问题并不清楚你的真实意图,所以我们不得不猜测。