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

Python新手求助:华氏转摄氏温度函数报错问题排查

解决华氏转摄氏函数的TypeError问题及代码优化

你的代码存在两个核心问题,同时调用方式也有错误:

  • 类型错误原因:要么调用convert_f_to_c()时传入了字符串类型的温度值,要么参数本身未被转为数值,导致temp_in_fahrenheit - 32.00时出现字符串与浮点数无法运算的错误。
  • 不符合作业要求:round(celsius)会直接取整,无法实现保留1位小数的要求;多余的float()转换不仅没用,还会掩盖参数类型问题。

修正后的代码如下:

def convert_f_to_c(temp_in_fahrenheit):
    # 先将输入转为浮点数,兼容数字或合法数字字符串输入
    fahrenheit = float(temp_in_fahrenheit)
    # 执行华氏转摄氏的计算公式
    celsius = (fahrenheit - 32) * 5 / 9
    # 指定保留1位小数返回
    return round(celsius, 1)

# 正确调用示例
print(convert_f_to_c(77))       # 输出:25.0
print(convert_f_to_c("98.6"))   # 输出:37.0

关键优化点说明:

  1. 提前将参数转为float,彻底避免字符串与数值运算的类型错误,同时兼容多种输入形式
  2. 使用round(celsius, 1)明确指定保留1位小数,完全符合作业要求
  3. 调用函数时必须传入有效参数,不能像原代码那样空调用convert_f_to_c()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:02:01