【问题标题】:Python | Pass and Continue statements not resuming loop蟒蛇 |通过和继续语句不恢复循环
【发布时间】:2019-11-13 19:10:08
【问题描述】:

我正在尝试做的事情:我实际上是在运行一个带有 ID 列表的搜索过程。那些由于某种原因失败的,我附加到一个单独的列表中,以便我可以选择重新运行那些在一些不同参数下的。

我是如何做到的:

# Defining the customer ID list and a list for failed searches
customer_IDs = [1,2,3,4,5]
failed_IDs = []

# Looping the search procedure for all IDs in the original list
for customerid in customer_IDs:
    try:
        search_procedure(customerid)
    except:
        failed_IDs.append(customerid)
        pass

if len(failed_IDs) > 0:
    print("There were " + str(len(failed_IDs)) + " customers that were not found")

我的期望是,例如,一旦代码未能找到客户 1,它将恢复剩余 4 的循环,然后才去评估列表在 if 语句中的长度。但是,第一个ID没有找到后,直接进入if部分。

我尝试使用passcontinue 重置代码,但仍然保持相同的行为。

为什么我知道循环不会继续:本质上是因为这是一次使用 Selenium 进行网络抓取的尝试。我正在使用客户 ID 自动执行搜索、导航和下载一系列文档的任务。当第一个中断时,它不会继续到第二个。搜索失败的原因是我目前无法正确地将 Selenium 切换到必要的最终按钮所在的框架。不幸的是,代码本身并没有错误消息与大家分享。

我进行了相当广泛的搜索,但除了代码上的 continue/pass 语句之外,仍然没有发现任何相似之处,但没有帮助。

对新手有什么建议吗?

谢谢!

【问题讨论】:

  • passcontinue 在那里完全没有意义,因为简单地删除它们应该会导致相同的行为,即循环继续直到迭代器耗尽。您必须提供minimal reproducible example,因为您显示的代码不会按照您描述的方式运行
  • 你有一个非常通用的异常声明。根据要求,您的逻辑是正确的。要调试,您在异常块中添加打印语句并查看它是否通过所有循环。
  • 绝对确定您的代码正在跳过循环吗?您是否尝试过将打印语句放入循环中以检查它是否仍在运行(例如,如果只有一个错误)?我无法在我的机器上重现您的错误。

标签: python loops except


【解决方案1】:

代码看起来不错,而且您不需要pass 关键字。

在你的编辑器中你的缩进很糟糕吗?可能是iffor 里面?

对于我这边的复制,我使用了以下函数和您的代码

# Dummy function
def search_procedure(idx):

    if idx == 2:
        pass
    else:
        raise ValueError

【讨论】:

  • 您好,感谢您的有用评论。我已经确定这不是缩进错误。事实上,确切的代码如下所示:** 编辑:我目前无法添加具有适当代码格式的注释,但它看起来与我发布的通用代码非常相似。
  • 当我运行您的代码时,我没有收到任何错误。拥有完整的代码会很有帮助。
猜你喜欢
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2016-10-07
  • 2018-06-17
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多