虽然循环 "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
输入除数字以外的任何内容都需要继续循环,但是循环到了finally
和break
秒。
您只需删除 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
结构之外
finally
将 always 运行 在 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()
。
尝试运行一个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
输入除数字以外的任何内容都需要继续循环,但是循环到了finally
和break
秒。
您只需删除 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
结构之外
finally
将 always 运行 在 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()
。