2016-12-09 2 views
3

Momentan Probleme mit der Unterbrechung dieser for-Schleife. Ich möchte es brechen, wenn die Variable nicht in dieser Liste gefunden wird, so dass es zwei weitere für die Schleife verschieben kann. Es erwartet einen eingerückten Block für den Anfang der for-Schleife, aber wenn ich die Position der Unterbrechung oder des Beginns der for-Schleife ändere, funktioniert es nicht. Hilfe!Break for-Schleife in einer if-Anweisung

while cyclenumb <= 10000: 

    for x in userpassword[k]: 
     for z in lowercaselist: 
      if x in z: 
       newpasswordlist.append(z) 
       k +=1 
       break 
     else: 

    for x in userpassword[k]: 
     for z in uppercaselist: 
      if x in z: 
       newpasswordlist.append(z) 
       k +=1 
       break 
     else: 
+1

'break' bricht nur aus der inneren Schleife aus, nicht aus der äußeren Schleife. Sind Sie sicher, dass Sie die inneren Schleifen brauchen? Vielleicht sollte es nur "wenn X in Kleinbuchstaben" sein – Barmar

+1

Auf den ersten Blick scheint Ihre Einrückung falsch. Geht der erste sonst gegen den ersten, wenn x in z? Dann sollte es auf das gleiche Niveau eingerückt werden wie das erste if. Geht das dritte für die Aussage unter das andere? Dann sollte alles eine Stufe tiefer eingerückt sein als das Else. – rajah9

+0

Was ist der Wert von 'Kleinbuchstabe' und 'Großbuchstabe'? Sind sie Listen von Listen? So sieht es aus, wenn man über sie hinwegschleift und dann "x in z" benutzt. – Barmar

Antwort

4

Sie werden aus jeder Schleife separat brechen müssen, da die Menschen in den Kommentaren für Ihre Frage erwähnt haben, stoppt break nur die Schleife, die es in ist

for x in userpassword[k]: 
    for z in lowercaselist: 
     if x in z: 
      newpasswordlist.append(z) 
      k +=1 
      break 

    if x in z: # added an extra condition to exit the main loop 
     break 

Sie benötigen tun Sie dies für beiden Schleifen

Wenn Sie auch aus der while-Schleife brechen wollen, dann können Sie if x in z: break in dieser Schleife aswel

+0

Ja, das bedeutet, der Index ist zu groß für die Liste, zum Beispiel, wenn Sie eine "Liste" von 4 Elementen haben, und Sie versuchen, 'list [5] zu bekommen, wird es einen Fehler geben, weil es gibt kein 5. Element –

+0

danke, ich war in der Lage, das Indexproblem zu beheben, aber jetzt, nachdem ich die print newpasswordlist Funktion nach dem letzten k + = 1 n die if-Anweisung hinzugefügt, druckt es den Wert von z zweimal – mansa

+0

danke Sir, ich Ich werde das auch in meinem Programm hinzufügen, hoffentlich wird es funktionieren – mansa