我对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 == 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
答案 0 :(得分:1)
在while
循环的最后一次迭代中,i
指的是最后一个值。因此,
str2 = mylist[i+1]
尝试在之外引用字符串允许的范围,然后出错。
<编辑>编辑:另外,正如Wcrousse所提到的,while (i <= len(...))
应该更改为i < len(...)
,因为索引从0开始 - (长度为1)。
答案 1 :(得分:1)
变化
i <= len(mylist)
到
i < len(mylist)