TypeError:使用字典时,%:'list'和'int'的操作数类型不受支持

2024-04-26 15:33:00 发布

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

我正在尝试使用用户输入为单个字母创建一个基本的Vignere加密函数,代码如下:

alphanumero = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E', 5:'F', 6:'G', 7:'H',
8:'I', 9:'J', 10:'K', 11:'L', 12:'M', 13:'N', 14:'O', 15:'P', 16:'Q',
17:'R', 18:'S', 19:'T', 20:'U', 21:'V', 22:'W', 23:'X', 24:'Y', 25:'Z' }

inputlet = str(input("Enter letter to be encrypted: "))
try:
    print(alphanumero[inputlet])
except KeyError:
    letnum = [k for k, v in alphanumero.items() if v == inputlet[0]]
inputkey = str(input("Enter key letter: "))
try:
    print(alphanumero[inputkey])
except KeyError:
    keynum = [u for u, t in alphanumero.items() if t == inputkey[0]]
result = (letnum + keynum) % 26
print(result)

所以当我试着运行它时,我希望它输出11,给定A作为输入字母,L作为输入键,但是我得到了这个错误:

TypeError: unsupported operand type(s) for %: 'list' and 'int'

我该怎么解决这个问题?我对Python比较陌生,所以非常感谢您的回答


Tags: inforinput字母printentertrykeyerror
1条回答
网友
1楼 · 发布于 2024-04-26 15:33:00

letnumkeynum是列表。letnum + keynum是列表的连接,它不会将相应的元素添加到彼此。你不能在列表上使用% 26。使用列表理解来组合它们。你知道吗

result = [(letter + key) % 26 for letter, key in zip(letnum, keynum)]

相关问题 更多 >