输入"-"时Python的except ValueError语句为何未生效?
问题解析:输入"-"时except ValueError未生效的原因
嘿,这个问题我太熟了——十有八九是缩进问题在搞鬼!
首先咱们理清楚逻辑:当你输入单独的-时,int("-")确实会抛出ValueError,这是完全符合预期的,因为单独的负号并不是有效的整数字面量。你的代码逻辑本身没问题,但Python是一门依赖缩进区分代码块的语言,如果缩进不正确,except语句就无法和try绑定成一个完整的异常处理结构。
常见错误示例(缩进错误)
比如你可能写成了这样(注意缩进问题):
try: x = int(input("")) except ValueError: print("only int")
或者except的缩进和try不一致,导致解释器认为except是独立的代码块,不属于try的异常处理分支。这时当ValueError抛出时,没有对应的捕获逻辑,程序就会直接抛出异常而不执行print语句。
正确的代码写法
只需要保证try、except处于同一缩进层级,并且print语句缩进在except块内部即可:
try: x = int(input("")) except ValueError: print("only int")
这样当你输入-时,int()抛出的ValueError会被except块捕获,程序就会输出only int,而不是直接抛出异常。
内容的提问来源于stack exchange,提问作者DoxMan
相关产品推荐
相关产品推荐

