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
关键优化点说明:
- 提前将参数转为
float,彻底避免字符串与数值运算的类型错误,同时兼容多种输入形式 - 使用
round(celsius, 1)明确指定保留1位小数,完全符合作业要求 - 调用函数时必须传入有效参数,不能像原代码那样空调用
convert_f_to_c()
内容的提问来源于stack exchange,提问作者Lalies
相关产品推荐
相关产品推荐

