【问题标题】:For loop with an else and one iteration带有一个 else 和一个迭代的 For 循环
【发布时间】:2018-02-28 17:36:40
【问题描述】:

我有一个 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!!")

【问题讨论】:

  • else 子句将总是被执行。如果循环在没有breaking 的情况下结束,则循环上的else 将执行。

标签: python-3.x for-else


【解决方案1】:

正如 user2357112 提到的,以及 Python 文档中所述 here

循环的 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!!")

【讨论】:

    最近更新 更多