Я не знаю, почему я получаю эту ошибку или индекс вне диапазона. Я использую Python 3.0 в ноутбуке Jupyter - PullRequest
0 голосов
/ 27 июня 2018
import random
from IPython.display import clear_output

dictionary = open("words_50000.txt","r")
dict_5000 = dictionary.readlines()
guess = random.choice(dict_5000).lower().strip('\n')
no_of_letters = len(guess)
game_str = ['-']*no_of_letters
only_length=[]

def word_guesser():
    only_length_words()
    print(dict_5000)


def only_length_words():
    for i in range(len(dict_5000)):
        if len(dict_5000[i].strip('\n'))!=no_of_letters:
            dict_5000.pop(i)    

word_guesser()

----------------------------------------------- ---------------------------- IndexError Traceback (последний вызов последний) в () 20 dict_5000.pop (i) 21 ---> 22 word_guesser ()

в word_guesser () 11 12 def word_guesser (): ---> 13 only_length_words () 14 отпечатков (dict_5000) 15

in only_length_words () 17 def only_length_words (): 18 для i в диапазоне (len (dict_5000)): ---> 19 if len (dict_5000 [i] .strip ('\ n'))! = No_of_letters: 20 dict_5000.pop (i) 21

IndexError: список индексов вне диапазона

1 Ответ

0 голосов
/ 27 июня 2018

Проблема в том, что вы используете pop(), который искажает список, но вы также перебираете список. Итак, допустим, что в списке есть элемент, который вы выделили. Теперь длина искаженного списка короче оригинала, но цикл for все равно будет пытаться выполнить итерацию до первоначальной длины списка, и это вызывает IndexError.

...