You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现输入负数时抛出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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:05