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

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

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

  1. while True:
  2. try:
  3. print('open')
  4. num = int(input("Enter number:"))
  5. print(num)
  6. except ValueError:
  7. print('Error:"Please enter number only"')
  8. continue #this continue is not working, the loop runs and break at finally
  9. finally:
  10. print('close')
  11. break

如果输入了除数字以外的任何内容,但循环达到 finallybreak S

cig3rfwq

cig3rfwq1#

finally 将始终在尝试后运行,除非。你想要 else ,仅当try块未引发异常时才会运行。
顺便说一下,尽量减少try块中的代码,以避免误报。

  1. while True:
  2. inp = input("Enter number: ")
  3. try:
  4. num = int(inp)
  5. except ValueError:
  6. print('Error: Please enter number only')
  7. continue
  8. else:
  9. print(num)
  10. break
  11. print('This will never print') # Added just for demo

试运行:

  1. Enter number: f
  2. Error: Please enter number only
  3. Enter number: 15
  4. 15

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

展开查看全部
8cdiaqws

8cdiaqws2#

您只需删除 finally: 声明来实现你想要的。

  1. while True:
  2. try:
  3. print('open')
  4. num = int(input("Enter number:"))
  5. print(num)
  6. break # stop the loop when int() returns a value
  7. except ValueError:
  8. print('Error:"Please enter number only"')
  9. continue

验证int()后需要执行的任何操作都应该在 try/except/finally 结构

相关问题