Python 字符串索引超出范围列表迭代

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

我对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
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)