while循环“continue”在try中不起作用,除了finally

gajydyqb  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(728)

试图运行一个 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 S

cig3rfwq

cig3rfwq1#

finally 将始终在尝试后运行,除非。你想要 else ,仅当try块未引发异常时才会运行。
顺便说一下,尽量减少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() 在循环的底部。

8cdiaqws

8cdiaqws2#

您只需删除 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 结构

相关问题