2017-05-10 11 views
0

Python関数にエラーがあります。コードを以下に示します。Python 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 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シェルがエラーを表示します。エラーは以下のとおりです。

================ RESTART: /Users/ggmac/Documents/ProjectM.py================
vigenere()
message: flee
Traceback (most recent call last):
File "", line 1, in
vigenere()
File "/Users/gg-mac/Documents/ProjectM.py", line 75, in vigenere
encrypting = chr(ord(med) + ord(keyl[med]))
TypeError: list indices must be integers or slices, not str

私のエラーについて教えてください。

答えて

0

リストインデックスは整数でなければなりません。以下の方法で問題を解決してください。

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) 
+0

ありがとうございました。それは私の問題を解決しました。 –

+0

今心配です。あなたの答えがあればそれを受け入れてください。 – Allen

関連する問題