2017-09-13 1 views
0

Ich habe versucht, ein Programm zu schreiben, das die längste Teilzeichenfolge in alphabetischer Reihenfolge in einer Zeichenfolge ausgibt. Hier ist mein Code:Indexfehler: Zeichenfolgenindex außerhalb des Bereichs python

s = 'azcbobobegghakl' 
n = 0 
longest = "a" 

while n < len(s): 
    x = n 
    for i in s: 
     if s[x + 1] >= s[x]: 
      x += 1 
     else: 
      break 

    sub_string = (s[n:x+1]) 
    if len(sub_string) > len(longest): 
    longest = sub_string 
    n += 1 

print ("Longest String in alphabetischer Reihenfolge ist:" + längsten)

Weil ich 'x' bei jeder Iteration und als Ergebnis erhöht wird, wird der Index bald gerät außer Reichweite. Ich frage mich nur, ob es einen Weg gibt, wie ich das umgehen könnte. Danke.

+0

Ich sehe einige gebrochene Einrückung. –

+0

Gebrochene Einrückung, Sie erhöhen nie den Wert von n, es wird eine Endlosschleife sein, es sei denn, es trifft Ihre break-Anweisung – AK47

+0

Danke. Verpasste die Einrückung beim Formatieren des Codes hier. Aber das löst mein Problem noch nicht. Trotzdem danke. – Tpenny

Antwort

0

Versuchen Sie folgendes: -

s = 'azcbobobegghakl' 
n = 0 
longest = "a" 
while n < len(s): 
    x = n 
    for i in s: 
     if x+1<len(s) and s[x + 1] >= s[x]: 
      x += 1 
     else: 
      break 
    sub_string = (s[n:x+1]) 
    if len(sub_string) > len(longest): 
     longest = sub_string 
    n += 1 
print(longest) 

EDIT: wenn n = len(s)-1 s [x + 1] bis n-te Zeichen von s zeigen wird, die ungültig ist. Du brauchst also eine zusätzliche Bedingung x+1<len(s), um das in Schach zu halten.

+1

das war super Mann. Du würdest nicht glauben, wie viele Stunden ich damit verbracht habe, das Problem zu beheben. Danke ein Haufen – Tpenny

+0

@jean Ich erklärte, warum sein Code in den Kommentaren nicht funktionierte. Wie auch immer, ich werde eine Bearbeitung machen. Danke für das Zeigen. – markroxor

Verwandte Themen