虽然循环 "continue" 在 try、except、finally 中不起作用

While loop "continue" not working inside try, except, finally

尝试运行一个while循环直到输入有效:

while True:
    try:
        print('open')    
        num = int(input("Enter number:"))
        print(num)

    except ValueError:
        print('Error:"Please enter number only"') 
        continue #this continue is not working, the loop runs and break at finally

    finally:
        print('close')
        break

输入除数字以外的任何内容都需要继续循环,但是循环到了finallybreak秒。

您只需删除 finally: 语句即可实现您想要的效果。

while True:
    try:
        print('open')    
        num = int(input("Enter number:"))
        print(num)
        break # stop the loop when int() returns a value

    except ValueError:
        print('Error:"Please enter number only"') 
        continue

验证 int() 之后需要做的任何事情都应该在 try/except/finally 结构之外

finallyalways 运行 在 try-except 之后。你想要 else,这将 运行 只有当 try-block 没有引发异常时 .

顺便说一下,尽量减少 try 块中的代码,以避免误报。

while True:
    inp = input("Enter number: ")
    try:
        num = int(inp)
    except ValueError:
        print('Error: Please enter number only')
        continue
    else:
        print(num)
        break
    print('This will never print')  # Added just for demo

测试运行:

Enter number: f
Error: Please enter number only
Enter number: 15
15

请注意,您的示例中实际上不需要 continue,因此我在循环底部添加了一个演示 print()