Python TypeError:列表索引必须是整数或片,而不是str

Python TypeError:列表索引必须是整数或片,而不是str,python,Python,我的Python函数有一个错误。代码如下所示 def vigenere(): message1 = input('message: ') keyl = ['l', 'e', 'm', 'o', 'n'] if len(message1) > len(keyl): keyl = [i * 5 for i in keyl] else: pass for med in message1: encr

我的Python函数有一个错误。代码如下所示

def vigenere():
    message1 = input('message: ')
    keyl = ['l', 'e', 'm', 'o', 'n']
    if len(message1) > len(keyl):
        keyl = [i * 5 for i in keyl]
    else:
        pass
    for med in message1:
              encrypting = chr(ord(med) + ord(keyl[med]))
              print(encrypting)
    encmessage = input('Is there a message you would like to decrypt?')
    for mes in encmessage:
        decrypting = chr(ord(med) - ord(keyl[med]))
        print(decrypting)
当我试图调用我的函数时,python shell演示了一个错误。错误如下所示

def vigenere():
    message1 = input('message: ')
    keyl = ['l', 'e', 'm', 'o', 'n']
    if len(message1) > len(keyl):
        keyl = [i * 5 for i in keyl]
    else:
        pass
    for med in message1:
              encrypting = chr(ord(med) + ord(keyl[med]))
              print(encrypting)
    encmessage = input('Is there a message you would like to decrypt?')
    for mes in encmessage:
        decrypting = chr(ord(med) - ord(keyl[med]))
        print(decrypting)
===================重新启动:/Users/ggmac/Documents/ProjectM.py===================
维格纳()
消息:逃离
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
维格纳()
文件“/Users/gg mac/Documents/ProjectM.py”,第75行,在vigenere中
加密=chr(ord(med)+ord(keyl[med]))
TypeError:列表索引必须是整数或片,而不是str


您能帮我一下并告诉我我的错误吗?

列表索引必须是整数。以下内容可以解决您的问题

def vigenere():
    message1 = input('message: ')
    keyl = ['l', 'e', 'm', 'o', 'n']
    if len(message1) > len(keyl):
        keyl = [i * 5 for i in keyl]
    else:
        pass
    for i,med in enumerate(message1):
              encrypting = chr(ord(med) + ord(keyl[i]))
              print(encrypting)
    encmessage = input('Is there a message you would like to decrypt?')
    for k, mes in enumerate(encmessage):
        decrypting = chr(ord(med) - ord(keyl[k]))
        print(decrypting)

列表索引必须是整数。以下内容可以解决您的问题

def vigenere():
    message1 = input('message: ')
    keyl = ['l', 'e', 'm', 'o', 'n']
    if len(message1) > len(keyl):
        keyl = [i * 5 for i in keyl]
    else:
        pass
    for i,med in enumerate(message1):
              encrypting = chr(ord(med) + ord(keyl[i]))
              print(encrypting)
    encmessage = input('Is there a message you would like to decrypt?')
    for k, mes in enumerate(encmessage):
        decrypting = chr(ord(med) - ord(keyl[k]))
        print(decrypting)

非常感谢你。这解决了我的问题。现在我开始担心了。如果有帮助的话,请接受它作为你的答案。非常感谢。这解决了我的问题。现在我开始担心了。如果有帮助的话,请接受它作为你的答案。