2017-09-19 1 views
-1

Ich habe eine for loop, die eine dynamische Liste von Kontaktobjekten durchläuft und überprüft, ob die Kontakt-E-Mail eine bestimmte Bedingung erfüllt. Ich habe eine else-Anweisung mit der for loop verwendet, um eine "Sorry-Bedingung nicht erfüllt" zurückzugeben, wenn die Liste erschöpft ist. Dieser Ansatz funktioniert einwandfrei, außer wenn die Liste nur einen Kontakt hat, der die Bedingung erfüllt. In diesem Szenario werden sowohl der Rumpf der for loop als auch die else Teile ausgeführt.For-Schleife mit einer else und einer Iteration

Bitte beachten Sie, dass der Interpreter den else Teil für eine Iteration ignoriert, die die eingestellte Bedingung erfüllt.

def searchContact(self, search_name): 
    print("Your search matched the following:") 
    for contact in self.contacts: 
     if search_name in contact.name: 
      print(contact) 
    else: 
     print("Sorry that contact does not exist!!") 
+1

Diese 'else'-Klausel wird * immer * ausgeführt. Ein 'else' in einer Schleife wird ausgeführt, wenn die Schleife ohne 'break' endet. – user2357112

Antwort

0

Wie user2357112 erwähnt, und wie in den Python-Dokumentation angegeben here

eine else-Klausel der Schleife ausgeführt wird, wenn keine Pause

auftritt Sie etwas entlang der Linien von versuchen könnte:

def searchContact(self, search_name): 
    contact_found = False 

    print("Your search matched the following:") 
    for contact in self.contacts: 
     if search_name in contact.name: 
      contact_found = True 
      print(contact) 

    if not contact_found: 
     print("Sorry that contact does not exist!!") 
+0

danke. Das funktioniert perfekt – Arden

Verwandte Themen