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

Python新手求助:摄氏转华氏代码报错原因及修复方案

问题分析与修复方案

嘿,我来帮你排查这个报错的原因~

报错根源

你遇到的是类型不匹配错误:从文件里读取出来的温度值是字符串类型,但你的cel_to_fahr函数需要接收数字(整数/浮点数)来做大小比较和计算。直接把字符串传给函数,Python没办法把字符串和-273.15这个数字做比较,自然就报错啦。

另外你的文件内容是一行用空格分隔的多个温度值,原代码里splitlines()只会按行分割,得到的是包含整行内容的列表(比如["10 -20 -289 100"]),循环的时候相当于把整个长字符串传给函数,这也会导致问题。

修复后的完整代码

def cel_to_fahr(c):
    if c < -273.15:
        return "physical matter can reach only till -273.15"
    else:
        f = c * 9/5 + 32
        return f

# 优化文件读取与处理逻辑
with open("tempr.txt") as temp:  # 用with语句自动管理文件资源,避免忘记关闭
    tempr_content = temp.read().strip()  # 读取文件内容并去除首尾空白字符
    tempr_list = tempr_content.split()  # 按空格分割成单个温度字符串的列表

for temp_str in tempr_list:
    try:
        # 将字符串转换为浮点数,确保能处理整数和小数温度
        c_temp = float(temp_str)
        result = cel_to_fahr(c_temp)
        print(result)
    except ValueError:
        # 处理文件中存在非数字内容的情况
        print(f"警告:无法识别温度值 '{temp_str}',请检查文件内容")

关键修复点说明

  • 文件资源管理:用with open(...)替代直接open(),文件会在代码块结束后自动关闭,更安全可靠
  • 字符串分割:用split()替代splitlines(),能正确把一行中的多个温度值拆分成单独的元素
  • 类型转换:把每个温度字符串转换成float类型,确保函数能正常进行数值计算和比较
  • 异常处理:添加try-except块,就算文件里有非数字内容,程序也不会直接崩溃,还会给出友好提示

测试效果

运行修复后的代码,你会得到如下输出:

50.0
-4.0
physical matter can reach only till -273.15
212.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:21:53