#python #python-3.x
#python #python-3.x
Вопрос:
Я довольно новичок в python, я не уверен, как исправить строку индекса вне диапазона. это происходит сразу после цикла while, когда я хочу отправить mylist[i] [0] в функцию форматирования. Любой указатель на мой код в целом был бы потрясающим!
def formatting(str1):
if str1 == '?':
return True
else:
return False
while(i <= len(mylist)):
val = formatting(mylist[i][0])
if val == True:
str1 = mylist[i]
str2 = mylist[i 1]
i = i 2
format_set(str1, str2)
else:
if format == True:
if (margin count len(mylist[i])) <= width:
if (i == (len(mylist)-1)):
list2.append(mylist[i])
print(" " * margin " ".join(list2))
break
list2.append(mylist[i])
count = len(mylist[i])
i = 1
else:
print(" " * margin " ".join(list2))
list2 = []
count = 0
else:
temp_margin = margin
temp_width = width
width = 60
margin = 0
if (margin count len(mylist[i])) <= width:
if (i == (len(mylist)-1)):
list2.append(mylist[i])
print(" " * margin " ".join(list2))
margin = temp_margin
width = temp_width
break
list2.append(mylist[i])
count = len(mylist[i])
i = 1
else:
print(" " * margin " ".join(list2))
list2 = []
count = 0
Комментарии:
1. Используйте 4 пробела, чтобы ввести правильный отступ в ваш код. ВКЛАДКА здесь не работает.
Ответ №1:
изменить
i <= len(mylist)
Для
i < len(mylist)
Комментарии:
1. вам все равно придется иметь дело с mylist[i 1], о котором упоминал Абхи.
Ответ №2:
На последней итерации while
цикла i
ссылается на последнее значение. Следовательно,
str2 = mylist[i 1]
пытается ссылаться на строку за пределами допустимого диапазона, и вы получаете сообщение об ошибке.
РЕДАКТИРОВАТЬ: также, как упоминал Wcrousse, значение while (i <= len(...))
должно быть изменено на i < len(...)
, поскольку индексы идут от 0 — (длина-1).
Комментарии:
1. Я получаю сообщение об ошибке в строке val = formatting(mylist[i][0]), у него нет возможности перейти к str2 = mylist[i 1]
2. Опубликуйте свое определение
formatting()
. Вероятно, он совершает ту же ошибку внутри.3. Ответ Wcrousse был основной причиной вашей проблемы. Использование
i <= len(mylist)
приведет к тому, что последняя итерацияi
выйдет за пределы диапазона.4. с изменением его на i < len(mylist) Я все еще получаю ошибку. для str2 = mylist[i 1], если он дойдет до этой точки, наверняка будет i 1