Для цикла с else и одной итерацией

У меня есть for loop он просматривает динамический список объектов контактов и проверяет, соответствует ли контактный адрес электронной почты указанному условию. Я использовал else заявление с for loop вернуть "Извините, условие не выполнено", когда список исчерпан. Этот подход работает отлично, за исключением случаев, когда в списке есть только один контакт, который удовлетворяет условию. В этом сценарии оба тела for loop и else части выполнены.

Пожалуйста, посоветуйте, как позволить переводчику игнорировать else часть для одной итерации, которая соответствует заданному условию.

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 ответ

Решение

Как упоминает user2357112, и как указано в документации по Python здесь

условие else цикла выполняется, когда не происходит перерыв

Вы можете попробовать что-то вроде:

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!!")
Другие вопросы по тегам