输入字母时如何触发Python代码中的ValueError异常捕获?
问题原因
你当前的代码里,float(input(...))的类型转换操作是在perform_calculation函数外部执行的。当输入字母这类非数值内容时,转换步骤会直接抛出ValueError,但这个异常不在函数内部的try-except覆盖范围内,所以函数里的except ValueError分支根本没机会触发。
解决方法
有两种简单的修改方式,任选其一即可:
方式一:在输入转换环节添加异常捕获
把输入和类型转换的逻辑放到try-except块中,这样输入非数值时的异常能被直接捕获:
def perform_calculation(number1, number2): result = number1 * number2 print(f"Result: {result}") # Test case try: number1 = float(input("Enter the first number:-")) number2 = float(input("Enter the second number:-")) perform_calculation(number1, number2) except ValueError: print("Error: Invalid input! Please enter a number.")
方式二:将输入逻辑整合到函数内部
如果想让函数自己处理输入和异常,可以把输入步骤也放到函数的try块里:
def perform_calculation(): try: number1 = float(input("Enter the first number:-")) number2 = float(input("Enter the second number:-")) result = number1 * number2 print(f"Result: {result}") except ValueError: print("Error: Invalid input! Please enter a number.") # Test case perform_calculation()
另外注意:原提示文本写的是"Please enter an integer",但代码用的是float转换(支持小数输入)。如果确实要限制输入整数,把代码里的float换成int即可。
内容的提问来源于stack exchange,提问作者Nna
相关产品推荐
相关产品推荐

