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

运行Python温度转换脚本时触发NameError,请求排查解决

温度转换脚本错误排查与修正

让我帮你逐一梳理这个Python脚本里的问题,以及对应的解决办法:

1. 循环语法错误

你写的for temp > -273 in temperatures完全不符合Python的循环语法逻辑。正确的做法是先遍历列表中的每个温度值,再在循环内部判断该值是否大于绝对零度:

# 错误写法
# for temp > -273 in temperatures:

# 正确写法
for temp in temperatures:
    if temp > -273.15:  # 绝对零度准确值是-273.15℃,建议用这个更精准
        # 后续处理逻辑

2. 温度转换公式逻辑错误

你的公式c = (temp - 32)*0.5556是华氏温度转摄氏温度的公式,但从你的输入列表temperatures来看(比如包含-20、10这类数值),更像是输入的是摄氏温度。如果你的需求是把摄氏温度转成华氏温度,公式应该是:

fahrenheit = temp * 1.8 + 32

如果确实是华氏转摄氏,那公式没问题,但要确保输入的是华氏温度值。

3. 类型拼接错误

计算得到的温度值是浮点数类型,直接和字符串"\n"拼接会触发类型错误,必须先把数值转换成字符串才能写入文件。可以用str()函数或者f-string来处理:

# 错误写法
# file.write(c+"\n")

# 正确写法(二选一)
file.write(str(c) + "\n")
# 或者用更简洁的f-string
file.write(f"{c}\n")

4. 文件操作不规范

每次循环都打开、关闭文件不仅效率低,还可能因为异常导致文件未正常关闭。推荐使用Python的with语句来自动管理文件上下文,它会在代码块结束后自动关闭文件:

# 错误写法
# file = open("convert.txt",'a+')
# file.write(c+"\n")
# file.close()

# 正确写法
with open("convert.txt", 'a+') as file:
    # 循环和写入逻辑放在这里

5. 关于NameError的说明

你给出的报错NameError: name 'conversion' is not defined和你贴的代码不匹配,大概率是你运行脚本时误调用了一个不存在的conversion函数,或者代码复制时遗漏了部分内容。不过只要修正上面的代码问题,这个报错应该会消失。


修正后的完整代码(以摄氏转华氏为例)

temperatures = [10, -20, -289, 100]
absolute_zero = -273.15  # 绝对零度精准值

with open("convert.txt", 'a+') as file:
    for temp in temperatures:
        if temp > absolute_zero:
            fahrenheit = temp * 1.8 + 32
            file.write(f"{fahrenheit}\n")

如果你的需求是华氏转摄氏,只需要把转换公式改成celsius = (temp - 32) * 5/9即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:00:52