【问题标题】:How to break the match case but not the while loop如何打破匹配情况而不是while循环
【发布时间】:2022-08-19 21:30:30
【问题描述】:

我在检查事件循环中的值时尝试使用匹配大小写。然而break 不仅打破了匹配情况,而且也打破了事件循环。

这是代码

while True:
    # Some code stuff here
    if event == \"#PassSign\":
        # Some code stuff again to check password strength
        # Display the password strength
        match strength_pass:
            case 0:
                window[\"#StatusPassSign\"].update(\"No Password\", visible=True)
                break
            case 1:
                window[\"#StatusPassSign\"].update(\"Password Strength: Low\", visible=True)
                break
            case 2:
                window[\"#StatusPassSign\"].update(\"Password Strength: Medium\", visible=True)
                break
            case 3:
                window[\"#StatusPassSign\"].update(\"Password Strength: High\", visible=True)
                break

如何在不停止事件循环的情况下中断/停止匹配案例?

  • 您不需要打破匹配案例。
  • 如果您不希望它们中断循环,则可能不需要中断。
  • 你不需要吗?我认为这是因为 JavaScript 需要中断
  • 所以,正如已经说过的,在 python 匹配中不需要break。附带说明一下,还有一个 continue 令牌,它允许您在不中断循环的情况下停止迭代。

标签: python event-loop


【解决方案1】:

Python 有很多选项可以回答这个问题。实际上有很多令人惊讶的选择。

其中最直接的方法是将您的 for 循环放在一个单独的函数中。这将允许您从比赛中返回而不是休息。

window["#StatusPassSign"].update(PasswordMatch(strength_pass), visible=True)

def PasswordMatch(strength_pass):
    match strength_pass:
        case 0:
            return "No Password"
        case 1:
            return "Password Strength: Low"
        case 2:
            return "Password Strength: Medium"
        case 3:
            return "Password Strength: High"
    return ""

但是,正如我所说,有很多选择。

  1. Python 允许您设置要中断的嵌套层数:中断 2、
  2. 您可以在 while 循环中添加标志变量,
  3. try-except 块可让您设置退出点,或者
  4. 您可以尝试非常晦涩的 while-else 结构。

    我发现 Python infinity 令人惊讶,最后一个仍然让我吃惊。我必须找到它的用途。

    查看以下文章以获取每个示例:5 Ways to Break Out of Nested Loops in Python

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2020-09-18
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多