guess game - index error - python

import random

def print3x3(lists):
  for i, item in enumerate(lists, 1):
    print(item, end=' ')
    if i % 3 == 0:
      print()

listx = list()
list0 = list()

for i in range(3):
  for i in range(3):
    listx.append('x')

for i in range(3):
    for i in range(3):
      r = random.randint(1, 9)
      list0.append(r)

user = int(input("Enter num:  "))

while True:
  for i, item in enumerate(list0, 1):
    if item == user:
      listx[i] = user
      print3x3(listx)

i want to hide random numbers behind these x

and let user guess them

but it gives error

Traceback (most recent call last):
  File "main.py", line 26, in <module>
    listx[i] = user
IndexError: list assignment index out of range

what can i do ?1

thanks


Ответы (1 шт):

Автор решения: CrazyElf

Не копируйте конструкции слепо. Если в первом случае использования enumerate вам нужно, чтобы enumerate работал начиная с 1, а не с 0, чтобы правильно отрабатывал остаток от деления, то во втором случае вам этот параметр (начинать отсчёт с 1) наоборот мешает, потому что нумерация индексов в списках идёт с 0. Правильный код будет такой:

  for i, item in enumerate(list0):
    if item == user:
      listx[i] = user
→ Ссылка