不支持的操作数类型为 - :'str'和'str' - 获取此错误,我不知道为什么

问题描述:

目前正在创建一个Cesears密码,特别是解密。不支持的操作数类型为 - :'str'和'str' - 获取此错误,我不知道为什么

for char in decryptString: 
    x = ord(char) 
    x = x - decryptVal #this is my negative shift 

    if x < 32: 
     x = x + 32 

    elif x > 126: 
     x = x - 95 


    result = result - chr(x) 

print('') 
print('Decrypted string: ') 
print(result) 

而且我经常收到:

TypeError: unsupported operand type(s) for -: 'str' and 'str' 

我解密的消息,而不是

不知道为什么,希望得到一些见解:)

+2

是什么''decryptVal?你也从结果中减去'chr'(字符串),你不能从任何东西中减去字符 – jamylak 2013-05-01 13:06:37

+1

结果是否需要先初始化? – 2013-05-01 13:07:07

+1

哪一行发生错误? 'result = result - chr(x)'? – thegrinner 2013-05-01 13:07:35

你不能减去一个字符串关掉另一个字符串 - 这就是这个错误告诉你的东西(你可能错过了' - ','不支持的操作数类型( - )',因为它看起来像一个 - :)。

如果我正确理解您打算执行的操作,您希望将转换后的字符添加到输出字符串result中。字符串支持+进行连结这样做:

result = result + chr(x) 

您还需要在循环之前初始化result,即.. result = ''