为什么我在一个地方得到一个超出范围的指数而不是另一个?

时间:2016-11-05 18:37:26

标签: python string loops indexoutofboundsexception

def extendedString(string1, string2):
    newString = ""
    if len(string1) == len(string2):
        for i in range(0, len(string1)):
            newString = newString + string1[i] + string2[i]
        return newString
    else:
        if len(string1) < len(string2):
            for i in range(0, len(string2)):
                string1 = string1 + string1[i - 1]
            for i in range(0, len(string1)):
                newString = newString + string1[i] + string2[i]
            return newString
        else:
            for i in range(0, len(string1)):
                string2 = string2 + string2[i - 1]
            for i in range(0, len(string2)):
                newString = newString + string1[i] + string2[i]
            return newString

在第一个if语句中,我使用代码:

            newString = newString + string1[i] + string2[i]

并且没有索引超出范围错误但是然后在else语句中我在第12行使用完全相同的代码行并获得索引超出范围错误,为什么会这样?

1 个答案:

答案 0 :(得分:0)

这可能是因为在上面的if语句中,两个字符串“string1”和“string2”具有相同的长度,因此可以引用相等数量的元素,i。

但是在你的错误区域中,你的if语句声明len(string1)&lt; len(string2)因此最终不能具有相同的大小。

如果一个更大,它们在string1 [i]和string2 [i]中没有相同的i。

第9行 而不是:

for i in range(0, len(string2)):

使用:

for i in range(0, len(string1)):