Python 字符串索引超出范围列表迭代
我对python相当陌生,我不确定如何修复超出范围的索引字符串。当我想将mylist[I][0]发送到格式化函数时,它正好发生在while循环之后。一般来说,任何关于我代码的指针都会很棒Python 字符串索引超出范围列表迭代,python,python-3.x,Python,Python 3.x,我对python相当陌生,我不确定如何修复超出范围的索引字符串。当我想将mylist[I][0]发送到格式化函数时,它正好发生在while循环之后。一般来说,任何关于我代码的指针都会很棒 def formatting(str1): if str1 == '?': return True else: return False while(i <= len(mylist)): val = formatting(mylist[i][0]) if val
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
def格式设置(str1):
如果str1=='?':
返回真值
其他:
返回错误
而(i在
while
循环的最后一次迭代中,i
指的是最后一个值。因此
str2 = mylist[i+1]
正在尝试引用超出允许范围的字符串,您将得到一个错误
编辑:同样,正如Wcrousse所提到的,
while(i
i我在val=formatting(mylist[i][0])这一行上发现了错误,它没有机会进入str2=mylist[i+1]发布您对formatting()的定义。
。它可能会在内部犯同样的错误。Wcrousse的回答是您出现问题的主要原因。使用i并将其更改为ii <= len(mylist)
i < len(mylist)