Понимание списка, показывающее IndexError - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю игру палача. У меня возникла идея заменить подчеркивание буквой. Сначала пользователь вводит свое предположение (в данном случае буква «c»). Я просматриваю список, содержащий буквы неизвестного слова, создавая список с индексами каждого раза, когда есть совпадение для этой буквы. Затем я просматриваю список подчеркиваний и заменяю все подчеркивания буквой, используя созданный мной индексный список. Однако я получаю сообщение об ошибке:

IndexError: список индексов выходит за пределы диапазона.

Что я делаю неправильно в приведенном ниже коде?

y = "cctcc"
to_modify = ["_", "_", "_","_", "_"]
replacements = list(y)

user_input = input()
indexes = [i for i, j in enumerate(replacements) if j == user_input]
print(indexes)
for index in indexes:
  to_modify[indexes[index]] = replacements[index]

print(to_modify)

Вывод:

[0, 1, 3, 4]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-25-be2b07a156e5> in <module>()

     10 print(indexes)

     11 for index in indexes:

---> 12   to_modify[indexes[index]] = replacements[index]

     13 

     14 print(to_modify)


IndexError: list index out of range

1 Ответ

3 голосов
/ 26 апреля 2020

Этот раздел кода уже проходит по индексам:

for index in indexes:
    to_modify[indexes[index]] = replacements[index]

Если indexes содержит [0,1,3,4], когда index возвращается к 4, он пытается чтобы получить доступ к indexes[4], находящемуся вне диапазона, просто используйте индексы, которые вы получаете от l oop:

for index in indexes:
    to_modify[index] = replacements[index]
...