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

Python统计气温报错NameError: name 'line' is not defined求助

错误原因

  1. NameError: name 'line' is not defined报错:
    你写的三行用line切片取值的代码放在了for循环之前,但line是仅在for line in all_lines循环内生效的迭代变量,循环外没有定义该变量,运行到这三行时自然会报变量不存在的错误,这三行属于冗余代码,直接删除即可。
  2. 删除上述冗余代码后运行结果全为0.0:
    两种可能:
  • 你的气温文件第一行是表头说明行,你循环时把表头行也纳入了计算,表头行的对应字段无法转为有效数值
  • 你用split(" ")拆分行的方式不符合文件格式,你之前尝试用切片取值,说明你的文件大概率是固定宽度格式而非空格分隔格式,用split自然取不到正确的气温值。

修正代码

根据你的文件格式二选一即可,代码里已经加上了跳过表头的逻辑,如果你的文件没有表头,删掉all_lines = all_lines[1:]这一行就行。

适配固定宽度格式文件(对应你最开始的切片取数逻辑)

with open("PIT_Temps.txt","r") as my_file:
    all_lines = my_file.readlines()

avg_max = 0
avg_min = 0
avg_avg = 0
# 没有表头就删除下面这行
all_lines = all_lines[1:]
line_count = len(all_lines)

for line in all_lines:
    avg_max += int(line[9:11])
    avg_min += int(line[12:14])
    avg_avg += int(line[15:17])

avg_max = avg_max / line_count
avg_min = avg_min / line_count
avg_avg = avg_avg / line_count

print('2015年8月的平均气温统计结果如下:')
print('日最高温平均值:', avg_max)
print('日最低温平均值:', avg_min)
print('日平均气温的平均值:', avg_avg)

适配空格分隔格式文件(对应你写的split拆分逻辑)

with open("PIT_Temps.txt","r") as my_file:
    all_lines = my_file.readlines()

avg_max = 0
avg_min = 0
avg_avg = 0
# 没有表头就删除下面这行
all_lines = all_lines[1:]
line_count = len(all_lines)

for line in all_lines:
    # split不带参数自动适配多空格、制表符等分隔场景
    parts = line.split()
    avg_max += int(parts[1])
    avg_min += int(parts[2])
    avg_avg += int(parts[3])

avg_max = avg_max / line_count
avg_min = avg_min / line_count
avg_avg = avg_avg / line_count

print('2015年8月的平均气温统计结果如下:')
print('日最高温平均值:', avg_max)
print('日最低温平均值:', avg_min)
print('日平均气温的平均值:', avg_avg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:04