尝试对列表进行操作时,Python3.x中出现不支持的操作数类型错误

2024-09-30 01:27:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设所有ASCII码都设置为变量(a=97、b=98等)。你知道吗

word = eval(input("What would you like to say? "))
key = 174
print (word)
changedword = (', '.join(str(I + key) for I in word))
print ("Your encrypted string is:" + changedword)
ans1 = input("Would you like to decrypt this?")
print (ans1)
if (ans1 == "yes"):
    print (changedword)
    decryptedword = (', '.join(str(I - key) for I in changedword))
    ans2 = input(decryptedword + " was your decrypted number list. Do you 
want to translate to ASCII code?")
    if (ans2 == "yes"):
        print (', '.join(str(chr(I)) for I in decryptedword))

当运行这个代码时,我得到一个错误

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

参考第11行 我知道str和int是不同的,但是在我第一次使用它时它就起作用了,我不知道如何解决这个问题。任何帮助都将不胜感激。你知道吗

我知道它经常引用加密,我也知道它不是真正的加密,但我对这个还不熟悉,我只是在玩。你知道吗

所有额外的打印都是为了我自己的测试。你知道吗


Tags: tokeyinyouforinputasciilike
1条回答
网友
1楼 · 发布于 2024-09-30 01:27:50

就像你在问题中说的,问题是:

 decryptedword = (', '.join(str(I - key) for I in changedword))   

key是int,但changedword是此行的str:

changedword = (', '.join(str(I + key) for I in word))

迭代changedwordfor I in changedword,因此I也是str类型。你知道吗

所以你的问题是I - key当你试图从str中减去int时

如果要使用ascii值进行加减运算,请使用函数ord(c),其中c是字符串中的单个字符。如果要将其转换回字符,请使用函数chr(a),其中a是ascii int

相关问题 更多 >

    热门问题