2016-11-05 24 views
-2
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日線獲得索引超出範圍錯誤,這是爲什麼?

+0

因爲'string1','string2'和'i'有不同的價值觀? – zvone

+0

我建議你在異常之前打印這些變量的值。然後你會理解它。 – zvone

回答

0

這可能是因爲在上面的if語句中,「string1」和「string2」這兩個字符串具有相同的長度,因此可以引用等量的元素i。

但是在你的錯誤區域,你的if語句聲明len(string1)< len(string2),因此,最後不能有相同的大小。

如果其中一個較大,它們在string1 [i]和string2 [i]中的含義不同。

而不是在第9行,:

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

用途:

for i in range(0, len(string1)): 
相關問題