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

Innerhalb der ersten if-Anweisung verwende ich den Code:Warum bekomme ich an einem Ort einen Index außer Reichweite, aber nicht am anderen?

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

Und keinen Index außerhalb der Grenzen Fehler erhalten, aber dann in der else-Anweisung verwende ich die exakt gleiche Codezeile auf der 12. Zeile und erhalten ein Index außerhalb des Bereichs Fehler, warum ist das?

+0

Weil 'string1',' string2' und 'I' haben unterschiedliche Werte? – zvone

+0

Ich schlage vor, Sie sollten die Werte dieser Variablen vor der Ausnahme drucken. Dann wirst du es verstehen. – zvone

Antwort

0

Es kann sein, weil in Ihrer if-Anweisung oben die beiden Strings "string1" und "string2" die gleiche Länge haben und daher auf die gleiche Anzahl von Elementen verweisen können, d.

Aber in Ihrem Fehlerbereich, Ihre if-Anweisung besagt, dass len (string1) < len (string2) und daher kann nicht die gleiche Größe ich am Ende haben.

Sie haben nicht das gleiche i in string1 [i] und string2 [i] wenn eines größer ist.

In Zeile 9 Statt:

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

Verwendung:

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