Python统计气温报错NameError: name 'line' is not defined求助
错误原因
NameError: name 'line' is not defined报错:
你写的三行用line切片取值的代码放在了for循环之前,但line是仅在for line in all_lines循环内生效的迭代变量,循环外没有定义该变量,运行到这三行时自然会报变量不存在的错误,这三行属于冗余代码,直接删除即可。- 删除上述冗余代码后运行结果全为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
相关产品推荐
相关产品推荐

