问题遇到的现象和发生背景
在学习《Python编程从入门到实践(第2版)》时,做练习16-5时遇到的一些问题
程序用到的文件
百度网盘链接:
链接:https://pan.baidu.com/s/1tsTyM4AYisb0r3Bm3DegnA
提取码:2333
CSDN链接:
https://download.csdn.net/download/Allen_Wu233/85863224
问题相关代码
import csv
from datetime import datetime
import matplotlib.pyplot as plt
filename = 'data/shanghai_weather_2021.06.24-2022.06.24.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
def get_data(data_name):
"""获取数据"""
dates, data = [], []
date_index = header_row.index('DATE')
data_index = header_row.index(data_name)
if data_name in ('TAVG', 'TMAX', 'TMIN'):
for row in reader:
current_date = datetime.strptime(row[date_index], '%Y/%m/%d')
try:
datum = int(row[data_index])
except ValueError:
print(f"Missing data {data_name} for {current_date}")
else:
dates.append(current_date)
data.append(float("{:.1f}".format(5/9*(datum-32))))
# 将结果转换为摄氏度并保留一位小数
else:
for row in reader:
current_date = datetime.strptime(row[date_index], '%Y/%m/%d')
try:
datum = float(row[data_index])
except ValueError:
print(f"Missing data {data_name} for {current_date}")
else:
dates.append(current_date)
data.append(datum)
return dates, data
# 从文件中获取日期、降雨量、降雪量、平均温度、最高温度和最低温度
# precips = get_data('PRCP')
# snowfalls = get_data('SNWD')
avegs = get_data('TAVG')
highs = get_data('TMAX')
lows = get_data('TMIN')
# highs[0]为最高温度(TMAX)对应的日期(DATE),lows[0]、avegs[0]同理
print(highs)
print(lows)
print(len(highs[0]))
print(len(lows[0]))
print(len(avegs[0]))
print(len(highs[1]))
print(len(lows[1]))
print(len(avegs[1]))
运行结果及报错内容
([], [])
([], [])
0
0
366
0
0
366
***Repl Closed***
我的解答思路和尝试过的方法
尝试定义函数get_data() 来处理多种数据,平均温度(TAVG)能正常获取,即元组avegs中的列表不为空列表,
但最高温度(TMAX)和最低温度(TMIN)不能正常获取,即元组highs、lows中的列表为空列表
我想要达到的结果
获取最高温度(TMAX)和最低温度(TMIN)的数据,达到和获取平均温度(TAVG)一样的效果
感谢你的帮助!