list index out of range, когда уже у меня есть созданный список, и я могу печатать ее

e=[]
entrada=input("Entrada de dades: ")
dades1=entrada.split("*")
for cad in dades1:
    e=cad.split()
    nom=e[0]
    nTaron=e[2]
    nPeixos=e[4]
    nBlat=e[6]

Случай состоит в том, что я хочу распределить эти переменные, в которое он получается от array, но меня отпускает ошибка list index out of range. Я могу печатать список (e), но не могу сохранять стоимость в переменной.

Спасибо

0
задан 07.11.2019, 20:19
1 ответ

Проблема состоит в том, что в одном из повторений цикла for (Гєltima) у тебя нет данных, которых нужно обрабатывать.

Действительно, если он она, введенная, что ты даешь input(), (как ты показал в комментарии) она lГ-nea p sid t 53 p 12 t 45 b 21 t 20 *, так как первым, что ты делаешь, является один .split("*"), это будет производить тебе список с двумя elmentos:

# Valor de dades1=
['sid t 53 p 12 t 45 b 21 t 20 ', '']

Первый раз, который ты повторяешь из-за этого списка, нет проблемы. cad берет стоимость "sid t 53 p 12 t 45 b 21 t 20 " и все в порядке. Но в следующей iteraciГіn cad берет стоимость "" (цепь vacГ - в), а следовательно split() производит в e список vacГ - в, и ahГ - ошибка.

Простой способ это предотвращать состоит в том, чтобы отпускать тебе элементы, у которых не есть ожидаемой длины:

entrada=input("Entrada de dades: ")
dades1=entrada.split("*")
for cad in dades1:
    e=cad.split()
    if len(e)<6:
       continue
    nom=e[0]
    nTaron=e[2]
    nPeixos=e[4]
    nBlat=e[6]

Решение continue способствует тому, чтобы он оставил эту iteraciГіn цикла и произошел со следующей. Или quizГЎs захоти сделать один break (saldrГ - в цикла), или quizГЎs не повторять, а работать только с dades1[0]. Это уже зависит от твоего случая использования.

0
ответ дан 01.12.2019, 12:21
  • 1
    Большое спасибо, уже функционируй! :) Приветствие compañ ero! – mortadela_deolivas 07.11.2019, 21:03