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

时间:2014-06-26 03:01:53

标签: 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 == 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

2 个答案:

答案 0 :(得分:1)

while循环的最后一次迭代中,i指的是最后一个值。因此,

str2 = mylist[i+1]

尝试在之外引用字符串允许的范围,然后出错。

<编辑>编辑:另外,正如Wcrousse所提到的,while (i <= len(...))应该更改为i < len(...),因为索引从0开始 - (长度为1)。

答案 1 :(得分:1)

变化

i <= len(mylist)

i < len(mylist)