当前位置: 首页 > news >正文

获取天气数据问题【python】

任务描述
本关任务:利用天气数据制作一个简单的Pyhton字典,用户从该字典中提取相关天气数据。

相关知识
为完成本关任务,你可能需要以下知识点:

字典的创建与操作(略)
字典类型的嵌套
文本文件的简单读写操作(略)
字符串的简单操作(略)
字典类型的嵌套
字典类型中,键值对的值可以是任意的数据类型,因此也可以是另一个字典,通过这种方式,可对更加复杂的数据进行表达,以下代码即使用一个嵌套的字典表达了一组学生信息,字典dt中的2个键值对的值也是字典类型:

dt = {
'张三':{'学号':201111, '年级':2020, '专业':'计算机'},
'李四':{'学号':201112, '年级':2020, '专业':'英语'}
}
通过不同层次的键,可获得两层字典中的值:

print(dt['张三'])
print(dt['李四']['年级'])
输出如下:

{'学号': 201111, '年级': 2020, '专业': '计算机'}
2020
当然,值也可以是列表、元组等各类其他的数据类型。

编程要求
现有一个文件oxforddata.txt,包含一个城市多年的天气数据,部分内容为:

yyyy  mm   tmax    tmin      af    rain     sundegC    degC    days      mm   hours
1853   1    8.4     2.7       4    62.8     ---
1853   2    3.2    -1.8      19    29.3     ---
1853   3    7.7    -0.6      20    25.9     ---
1853   4   12.6     4.5       0    60.1     ---
1853   5   16.8     6.1       0    59.5     ---
1853   6   20.1    10.7       0    82.0     ---
1853   7   21.2    12.2       0    86.2     ---
1853   8   20.2    10.8       0    72.3     ---
1853   9   17.3     8.4       0    51.3     ---
1853  10   13.9     7.4       0   102.3     ---
1853  11    8.7     2.3      10    49.6     ---
1853  12    3.7    -1.3      19    10.7     ---
1854   1    6.7     1.5      11    54.5     ---
1854   2    8.0     0.6      12    22.6     ---
......(此处省略若干行)
1953   1    5.4     0.8      13    21.8    42.5
1953   2    7.3     1.1      11    40.4    75.9
1953   3   10.8     0.3      17    17.2   140.7
1953   4   12.5     3.5       1    53.0   183.3
1953   5   17.9     8.2       0    42.8   223.0
1953   6   18.7    10.5       0    40.5   139.7
1953   7   20.4    11.7       0    82.1   203.4
1953   8   21.7    12.2       0    74.1   237.4
1953   9   18.6    10.0       0    47.3   151.7
1953  10   14.0     6.5       0    56.0    84.1
1953  11   11.3     5.9       0    39.7    54.4
1953  12    9.5     5.0       0    18.0    28.4 


其中第1行是数据的表头(分别表示年、月、最高温度、最低温度等信息),第2行是数据对应的单位,从第3行开始是具体的数据。

在右侧编辑器中有个函数Parse,要求在这个函数中,将上述文件的数据部分(即文件第3行开始)解析成一个多级字典,并返回这个字典。字典最外层键为年份(第一列),第二层键为月份(第二列),最内层键为其余列的数据项名(tmax, tmin, ...),形式如下:

{1853: {1: {'tmax': 8.4, 'tmin': 2.7, 'af': 4, 'rain': 62.8, 'sun': None}, 2: {'tmax': 3.2, 'tmin': -1.8, 'af': 19, 'rain': 29.3, 'sun': None}, 3: {'tmax': 7.7, 'tmin': -0.6, 'af': 20, 'rain': 25.9, 'sun': None}, 4: {'tmax': 12.6, 'tmin': 4.5, 'af': 0, 'rain': 60.1, 'sun': None}, 5: {'tmax': 16.8, 'tmin': 6.1, 'af': 0, 'rain': 59.5, 'sun': None}, 6: {'tmax': 20.1, 'tmin': 10.7, 'af': 0, 'rain': 82.0, 'sun': None}, 7: {'tmax': 21.2, 'tmin': 12.2, 'af': 0, 'rain': 86.2, 'sun': None}, 8: {'tmax': 20.2, 'tmin': 10.8, 'af': 0, 'rain': 72.3, 'sun': None}, 9: {'tmax': 17.3, 'tmin': 8.4, 'af': 0, 'rain': 51.3, 'sun': None},10: {'tmax': 13.9, 'tmin': 7.4, 'af': 0, 'rain': 102.3, 'sun': None}, 11: {'tmax': 8.7, 'tmin': 2.3, 'af': 10, 'rain': 49.6, 'sun': None}, 12: {'tmax': 3.7, 'tmin': -1.3, 'af': 19, 'rain': 10.7, 'sun': None}}, 1854: {1: {'tmax': 6.7, 'tmin': 1.5, 'af': 11, 'rain': 54.5, 'sun': None}, 2: {'tmax': 8.0, 'tmin': 0.6, 'af': 12, 'rain': 22.6, 'sun': None}, ......(此处省略若干行)1953: {1: {'tmax': 5.4, 'tmin': 0.8, 'af': 13, 'rain': 21.8, 'sun': 42.5}, 2: {'tmax': 7.3, 'tmin': 1.1, 'af': 11, 'rain': 40.4, 'sun': 75.9}, 3: {'tmax': 10.8, 'tmin': 0.3, 'af': 17, 'rain': 17.2, 'sun': 140.7}, 4: {'tmax': 12.5, 'tmin': 3.5, 'af': 1, 'rain': 53.0, 'sun': 183.3}, 5: {'tmax': 17.9, 'tmin': 8.2, 'af': 0, 'rain': 42.8, 'sun': 223.0}, 6: {'tmax': 18.7, 'tmin': 10.5, 'af': 0, 'rain': 40.5, 'sun': 139.7}, 7: {'tmax': 20.4, 'tmin': 11.7, 'af': 0, 'rain': 82.1, 'sun': 203.4}, 8: {'tmax': 21.7, 'tmin': 12.2, 'af': 0, 'rain': 74.1, 'sun': 237.4}, 9: {'tmax': 18.6, 'tmin': 10.0, 'af': 0, 'rain': 47.3, 'sun': 151.7}, 10: {'tmax': 14.0, 'tmin': 6.5, 'af': 0, 'rain': 56.0, 'sun': 84.1}, 11: {'tmax': 11.3, 'tmin': 5.9, 'af': 0, 'rain': 39.7, 'sun': 54.4}, 12: {'tmax': 9.5, 'tmin': 5.0, 'af': 0, 'rain': 18.0, 'sun': 28.4}}
} 


假设解析出来的字典名为dat,那么当访问:

dat[1853][1]['tmax']时,应该返回8.4;

dat[1853][1]['sun']时,应该返回None。

数据中缺失的部分(标注为---)用Python的None值代替。

输入数据由评测系统读取用于查询从Parse函数返回的字典,期间产生的输出将与规定的输出进行比较,详细要求请见测试说明。

输入输出示例
输入样例1:

`3`
`1853 1 tmax`
`1853 1 sun`
`2018 10 af`


输出样例1:

8.4
None
无对应数据

def Parse():with open('oxforddata.txt','r',encoding='utf-8') as f:txt=f.read()   #读取文件中的所有内容以字符串的形式存储在变量txt中lines=txt.split('\n') #得到列表lines,如['yyyy  mm   tmax    tmin      af    rain     sun', '            degC    degC    days      mm   hours', '1853   1    8.4     2.7       4    62.8     ---',......],省略号表示后面还有数据未列出#将文件内容解析成一个多级字典,并返回#   请在此添加实现代码   ## ********** Begin *********#data={}for line in lines:if line:items=line.split()if len(items)==7:year,month,tmax,tmin,af,rain,sun=itemsif year not in data:data[year]={}data[year][month]={'tmax':tmax,'tmin':tmin,'af':af,'rain':rain,'sun':sun}return data# ********** End **********#if __name__ == '__main__':# 调用Parase函数,用户可利用返回的多级字典查询所需信息# ********** Begin *********#weather_dict=Parse()n=int(input())for i in range(n):try:year,month,things=input().split(' ')if weather_dict[year][month][things]=='---':print('None')else:print(weather_dict[year][month][things])except:print('无对应数据')# ********** End **********#

http://www.dtcms.com/a/541957.html

相关文章:

  • 北京营销型网站开发海外购物app排行榜前十名
  • 张家港网站建设制作急招临时工200元一天
  • 【笔试真题】- 浙商银行-2025.10.27
  • 必要 网站wordpress 显示文章标题
  • gps的定位图,在车的位置去寻找周围20x20的区域,怎么确定周围有多少辆车,使用什么数据结构
  • 江门城乡建设局官方网站网页设计代码居中
  • AOI在新能源电池制造领域的应用
  • 网站开发软件 连接SQL数据库网站开发难度
  • 怎么做注册账号的网站做电力产品的外贸网站
  • 精美手机网站模板网站开发常见毕业设计题目
  • 中国建设银行网站登录不上模板建站有什么优势
  • ECharts GL 3D饼图组件深度解析:从数学原理到工程实践
  • 让数据流动更智能:元数据如何重塑DataOps与ETL
  • 微信导航网站模板xcache wordpress
  • 都安做网站政务网站建设经验交流发言
  • 数据结构_深入理解堆(大根堆 小根堆)与优先队列:从理论到手撕实现
  • 线性数据结构深度解析:数组、链表、栈与队列的实现与应用
  • 顺德网站建设公司做网站送的企业邮箱能用吗
  • 兼职做国外网站钻前怀化网络推广公司
  • 如何做好楼宇自控系统设计?以服务人们需求为核心的路径
  • 做分析图网站桂林网站开发公司
  • 三亚网站建设费用郫县建设局网站
  • 网至普的营销型网站建设网页设计基础怎么制作水平导航条
  • SRE 进阶:AI 驱动的集群全自动化排查指南(零人工干预版)
  • 2025年接单经验和软件外包平台一览
  • 可以免费商用国外印花图案设计网站wordpress虚线框可序列
  • wordpress建立数据库错误关键词优化怎么做
  • 网站建设网银开通请别人做网站签订合同
  • 在 C 语言中判断字符串非空:str str[0] vs strlen
  • 使用 iText 9 为 PDF 添加文字水印的完整实战