如何实现输入负数时抛出ValueError的sqrt函数及错误代码修复
代码问题梳理与修正方案
现有代码的错误点
- 函数签名不符合要求:参数名不是要求的
f,缺失参数和返回值的类型标注,不满足sqrt(f:float) -> float的定义规范 - 边界判断错误:仅判断了
x>0的场景,漏掉了f=0的合法输入场景,0的平方根无法正常返回 - 错误处理逻辑不符合要求:负数场景没有抛出
ValueError异常,反而返回了字符串内容,和需求完全不符 - 多余的异常捕获逻辑:当前代码的
try...except块没有实际作用,就算触发了math.sqrt的异常,也是返回错误字符串而非抛出指定格式的异常
修正后的代码
import math def sqrt(f: float) -> float: if f < 0: raise ValueError("输入值f不能为负") return math.sqrt(f)
验证效果
执行测试用例符合预期:
>>> sqrt(4.0) 2.0 >>> sqrt(-1) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in sqrt ValueError: 输入值f不能为负
内容的提问来源于stack exchange,提问作者jordan parker
相关产品推荐
相关产品推荐

