如何打破匹配情况但不打破 while 循环

Fra*_*Ray 7 python event-loop

我在检查事件循环中的值时尝试使用匹配大小写。然而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
Run Code Online (Sandbox Code Playgroud)

如何在不停止事件循环的情况下中断/停止比赛?

0xF*_*0xF 9

Python 中没有失败,因此不需要尾随break.

如果您需要早点休息怎么办?您可以模拟它,但有例外:

class _MyBreak(Exception): pass

foo = 5
bar = 3
try:
    match foo:
        case 5:
            if bar > 1:
                print("about to break")
                raise _MyBreak()
            print("not reached")
        case 42:
            pass
except _MyBreak:
    pass
Run Code Online (Sandbox Code Playgroud)

  • 这是对的。请记住,在 Python 中,“break”语句只能属于“for”或“while”循环。没有其他的。 (2认同)