Python中While循环内使用Try Except时无法正确跳出循环问题
问题分析
你的代码问题核心是break语句的缩进位置不符合预期逻辑:
当前break和try...except结构平级,属于while循环下的公共执行逻辑,也就是说无论本次循环的输入是否合法,只要执行完try或except的代码,就会立刻触发break跳出循环,完全达不到「输入错误就重新提示输入,直到三个值全部输入正确再退出」的预期效果。
按你现有代码的执行流程,只会出现两种结果:
- 三个输入全为合法整数:try块执行完成后直接执行break,退出循环
- 任意一个输入无法转为整数:触发异常打印提示后,还是会执行break,直接退出循环
修复方案
你只需要将break缩进,放到try代码块的最后一行即可:只有三个输入全部转换成功,才会执行break跳出循环;如果触发异常,只会执行except里的打印逻辑,不会走到break,循环会自动进入下一轮重新提示输入。
def marks(): while True: try: x = int(input("Enter the marks 1 : ")) y = int(input("Enter the marks 2 : ")) z = int(input("Enter the marks 3 : ")) break except ValueError: print("Please enter a integer")
内容的提问来源于stack exchange,提问作者Himasha
相关产品推荐
相关产品推荐

