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

如何针对特定值捕获ValueError?温度范围校验异常排查

问题分析与解决

原代码核心问题

  • 你只在try块中处理了类型转换失败的ValueError,但没有主动抛出「温度超出范围」的异常。当温度>50或<3时,代码只会跳过计算逻辑,不会触发except块,所以无任何输出。
  • 现有异常提示信息只覆盖了温度大于50的情况,没考虑温度小于3的场景。

修正方案

  1. 完成类型转换后,主动检查温度范围,不符合则抛出ValueError
  2. 调整异常提示,覆盖两种不符合范围的情况
  3. 保留风速≥3的判断(风寒公式的适用条件通常要求风速不低于3)

修正后的代码

def windChill(temperature, windSpeed):
    try:
        temperature = float(temperature)
        windSpeed = float(windSpeed)
        # 主动检查温度范围,不符合则抛出异常
        if temperature > 50 or temperature < 3:
            raise ValueError("温度不能大于50或小于3")
        # 风速符合条件时计算风寒指数
        if windSpeed >= 3:
            equation = 35.74 + 0.6215*temperature - 35.75*(windSpeed)**0.16 + 0.4275*temperature*(windSpeed)**0.16
            print(round(equation, 1))
        else:
            print("风速需大于等于3才能计算风寒指数")
    except ValueError as e:
        print(e)

windChill(400,1)

效果说明

  • 调用windChill(400,1)会触发异常,输出温度不能大于50或小于3
  • 传入非数字参数(如windChill("abc",1))时,会捕获类型转换异常并输出对应提示
  • 温度正常但风速<3时,会提示风速不符合要求

内容的提问来源于stack exchange,提问作者Andrew Hemsworth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:54:16