2016-03-18 10 views
-1

Soo Ich habe dieses Problem, dass die while-Schleife einfach gewohnt brechen:while-Schleife wird nicht brechen, Python

print 'Enter your chosen email below!' 
def valid_email(mail): 
    email = mail[-len('@gmail.com'):len(mail)] 
    failled = mail[0:-len('@gmail.com')] 
    condition = True 
    while condition: 
     for a in mail: 
      if a == ' ': 
       print 'Try again' 
       condition = False 

     if email == '@gmail.com': 
      print 'You have succesfully logged in our website!' 
      break 
     else: 
      print 'Did you mean ' + failled + 'gmail.com' 
     break 

print valid_email('[email protected] l.com') 

i erhalten Ausgabe:

Enter your chosen email below! 
Try again 
Did you mean [email protected] 

i erwartet:

Enter your chosen email below! 
Try again 

Vielen Dank für Ihre Zeit!

+3

Ihre Schleife wird nur brechen, wenn es die Bedingung überprüft, die zu Beginn jeder Iteration ist. Da Sie 'condition = False' in der Mitte Ihrer Schleife setzen, wird der Code darunter immer noch ausgeführt –

+0

Sie müssen entweder' break' anstelle von 'condition = False' wählen oder' if condition == True' und dann ausführen Die if check – karthikr

+0

break funktioniert nicht für mich, wenn Anweisung gut funktioniert, aber ich habe immer noch Probleme zu verstehen, wie mein aktueller Code deosent funktioniert. – L1palas

Antwort

0

Wenn Sie nur Leerzeichen entfernen versuchen, dann str.replace ich empfehlen (““, ‚‘) (wobei str die E-Mail-Adresse =)

+0

Ich möchte, wenn der Benutzer die ungültige Adresse schreibt, wird ein Fehler auftauchen.:P – L1palas

0

Versuchen in anstelle der Verwendung von for-Schleife:

if ' ' in email: 
    break 

Wenn Sie in der for Schleife brechen, brechen Sie nur diese Schleife, nicht die while Schleife.

Verwandte Themen