2016-11-05 4 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 

文は、私がコードを使用する場合:インデックスが範囲外になっているのはなぜですか?最初の内

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

をそして境界エラーのうち、何のインデックスを取得しないが、その後else文で、私は12行のコードを正確に同じラインを使用して取得インデックスから範囲外のエラー、なぜこれはですか?

+0

'string1'、' string2'と 'i'は異なる値を持っているので? – zvone

+0

例外の前にそれらの変数の値を表示することをお勧めします。それであなたはそれを理解するでしょう。 – zvone

答えて

0

上記のif文では、2つの文字列 "string1"と "string2"の長さが同じであるため、同じ量の要素を参照できるためです。

あなたのエラー領域では、if文はlen(string1)< len(string2)であり、最後に同じサイズiを持つことはできません。

string1 [i]には同じiがありません。大きい場合はstring2 [i]に同じiがありません。

ライン9で

、 の代わりに:

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

用途:

for i in range(0, len(string1)): 
関連する問題