使用python遍历指定城市的一周气温


Posted in Python onMarch 31, 2017

处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示。

把城市名字写到一个列表里这样可以方便的添加城市。并附有详细注释

import requests
import json
#定义一个函数 避免代码重写多次。
def gettemp(week,d_or_n,date):
 wendu=data['result']['weather'][week]['info'][d_or_n][date] #对字典进行拆分
 return int(wendu)

def getft(t):
 ft=t*1.8+32
 return float(str(ft)[0:4])

cities=['保定','北京','上海','武汉','郑州','齐齐哈尔'] #这里可以指定想要遍历的城市
url='http://api.avatardata.cn/Weather/Query?key=68e75677978441f6872c1106175b8673&cityname=' #用于和cities里的城市进行字符串拼接
low=0
high=2
for city in cities:
 r = requests.get(url+city) # 最基本的GET请求
 #print(r.status_code)  获取返回状态200是成功
 #print(r.text) 打印解码后的返回数据
 data=json.loads(r.text) #返回的json数据被转换为字典类型
 #print(type(data)) data 的数据类型是字典 所以可以按照字典操作(字典里的列表就按列表操作)
 print(city,'近五天天气预报:')
 for i in range(5):
  week='周'+str(data['result']['weather'][i]['week']) #对字典类型进行逐个拆分 如列表 元组等。
  daylow=gettemp(i,'day',low)
  dlf=getft(daylow)
  dayhigh=gettemp(i,'day',high)
  dhf=getft(dayhigh)
  nightlow=gettemp(i,'night',low)
  nlf=getft(nightlow)
  nighthigh=gettemp(i,'night',high)
  nhf=getft(nighthigh)
  print(week,'白天气温:',daylow,'~',dayhigh,'摄氏度','晚上气温:',nightlow,'~',nighthigh,'摄氏度')
  print(' ','白天气温:',dlf,'~',dhf,'华氏度','晚上气温:',nlf,'~',nhf,'华氏度')
 print('\n')

{"result":{"realtime":{"wind":{"windspeed":null,"direct":"西风","power":"3级","offset":null},"time":"16:00:00","weather":{"humidity":"27","img":"0","info":"晴","temperature":"13"},"dataUptime":"1490517362","date":"2017-03-26","city_code":"101090201","city_name":"保定","week":"0","moon":"二月廿九"},"life":{"date":"2017-3-26","info":{"kongtiao":["开启制暖空调","您将感到有些冷,可以适当开启制暖空调调节室内温度,以免着凉感冒。"],"yundong":["较适宜","天气较好,但考虑风力较强且气温较低,推荐您进行室内运动,若在户外运动注意防风并适当增减衣物。"],"ziwaixian":["中等","属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"],"ganmao":["较易发","昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。"],"xiche":["较适宜","较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"],"wuran":null,"chuanyi":["冷","天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。"]}},"weather":[{"date":"2017-03-26","week":"日","nongli":"二月廿九","info":{"dawn":null,"day":["0","晴","17","西北风","3-4 级","06:12"],"night":["0","晴","2","西南风","微风","18:36"]}},{"date":"2017-03-27","week":"一","nongli":"二月三十","info":{"dawn":["0","晴","2","西南风","微风","18:36"],"day":["0","晴","15","南风","微风","06:11"],"night":["7","小雨","3","南风","微风","18:37"]}},{"date":"2017-03-28","week":"二","nongli":"三月初一","info":{"dawn":["7","小雨","3","南风","微风","18:37"],"day":["1","多云","15","南风","微风","06:09"],"night":["0","晴","3","南风","微风","18:38"]}},{"date":"2017-03-29","week":"三","nongli":"三月初二","info":{"dawn":["0","晴","3","南风","微风","18:38"],"day":["0","晴","18","南风","微风","06:08"],"night":["0","晴","3","北风","微风","18:39"]}},{"date":"2017-03-30","week":"四","nongli":"三月初三","info":{"dawn":["0","晴","3","北风","微风","18:39"],"day":["0","晴","17","北风","微风","06:06"],"night":["0","晴","3","北风","微风","18:40"]}}],"pm25":{"key":"Baoding","show_desc":"0","pm25":{"curPm":"34","pm25":"14","pm10":"26","level":"1","quality":"优","des":"空气很好,可以外出活动"},"dateTime":"2017年03月26日16时","cityName":"保定"},"isForeign":0},"error_code":0,"reason":"Succes"}
这是返回的一个json数据,可以通过json格式化工具查看会方便一些,通过json.loads其实都是字典列表的一些嵌套,而想要取的数据 在字典里"result"里, 而data['result'] 又是一个字典,
{'life': {'date': '2017-3-26', 'info': {'yundong': ['较适宜', '天气较好,但考虑风力较强且气温较低,推荐您进行室内运动,若在户外运动注意防风并适当增减衣物。'], 'xiche': ['较适宜', '较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。'], 'ganmao': ['较易发', '昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。'], 'ziwaixian': ['中等', '属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。'], 'chuanyi': ['冷', '天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。'], 'wuran': None, 'kongtiao': ['开启制暖空调', '您将感到有些冷,可以适当开启制暖空调调节室内温度,以免着凉感冒。']}}, 'weather': [{'date': '2017-03-26', 'week': '日', 'info': {'dawn': None, 'night': ['0', '晴', '2', '西南风', '微风', '18:36'], 'day': ['0', '晴', '17', '西北风', '3-4 级', '06:12']}, 'nongli': '二月廿九'}, {'date': '2017-03-27', 'week': '一', 'info': {'dawn': ['0', '晴', '2', '西南风', '微风', '18:36'], 'night': ['7', '小雨', '3', '南风', '微风', '18:37'], 'day': ['0', '晴', '15', '南风', '微风', '06:11']}, 'nongli': '二月三十'}, {'date': '2017-03-28', 'week': '二', 'info': {'dawn': ['7', '小雨', '3', '南风', '微风', '18:37'], 'night': ['0', '晴', '3', '南风', '微风', '18:38'], 'day': ['1', '多云', '15', '南风', '微风', '06:09']}, 'nongli': '三月初一'}, {'date': '2017-03-29', 'week': '三', 'info': {'dawn': ['0', '晴', '3', '南风', '微风', '18:38'], 'night': ['0', '晴', '3', '北风', '微风', '18:39'], 'day': ['0', '晴', '18', '南风', '微风', '06:08']}, 'nongli': '三月初二'}, {'date': '2017-03-30', 'week': '四', 'info': {'dawn': ['0', '晴', '3', '北风', '微风', '18:39'], 'night': ['0', '晴', '3', '北风', '微风', '18:40'], 'day': ['0', '晴', '17', '北风', '微风', '06:06']}, 'nongli': '三月初三'}], 'isForeign': 0, 'pm25': {'pm25': {'des': '空气很好,可以外出活动', 'curPm': '34', 'level': '1', 'pm10': '26', 'pm25': '14', 'quality': '优'}, 'show_desc': '0', 'key': 'Baoding', 'dateTime': '2017年03月26日16时', 'cityName': '保定'}, 'realtime': {'city_name': '保定', 'weather': {'info': '晴', 'img': '0', 'humidity': '27', 'temperature': '13'}, 'week': '0', 'wind': {'windspeed': None, 'power': '3级', 'offset': None, 'direct': '西风'}, 'city_code': '101090201', 'date': '2017-03-26', 'dataUptime': '1490517362', 'time': '16:00:00', 'moon': '二月廿九'}}
相同的方法取 data['result']['weather'] 这又是一个元组,
[{'nongli': '二月廿九', 'info': {'night': ['0', '晴', '2', '西南风', '微风', '18:36'], 'dawn': None, 'day': ['0', '晴', '17', '西北风', '3-4 级', '06:12']}, 'week': '日', 'date': '2017-03-26'}, {'nongli': '二月三十', 'info': {'night': ['7', '小雨', '3', '南风', '微风', '18:37'], 'dawn': ['0', '晴', '2', '西南风', '微风', '18:36'], 'day': ['0', '晴', '15', '南风', '微风', '06:11']}, 'week': '一', 'date': '2017-03-27'}, {'nongli': '三月初一', 'info': {'night': ['0', '晴', '3', '南风', '微风', '18:38'], 'dawn': ['7', '小雨', '3', '南风', '微风', '18:37'], 'day': ['1', '多云', '15', '南风', '微风', '06:09']}, 'week': '二', 'date': '2017-03-28'}, {'nongli': '三月初二', 'info': {'night': ['0', '晴', '3', '北风', '微风', '18:39'], 'dawn': ['0', '晴', '3', '南风', '微风', '18:38'], 'day': ['0', '晴', '18', '南风', '微风', '06:08']}, 'week': '三', 'date': '2017-03-29'}, {'nongli': '三月初三', 'info': {'night': ['0', '晴', '3', '北风', '微风', '18:40'], 'dawn': ['0', '晴', '3', '北风', '微风', '18:39'], 'day': ['0', '晴', '17', '北风', '微风', '06:06']}, 'week': '四', 'date': '2017-03-30'}]
接着取元组里的字典,逐步拆分即可获得想要的数据。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
Python Mysql自动备份脚本
Jul 14 Python
使用python提取html文件中的特定数据的实现代码
Mar 24 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
简单谈谈python中的语句和语法
Aug 10 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python实现多层感知器
Jan 18 Python
python 中如何获取列表的索引
Jul 02 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
Python获取对象属性的几种方式小结
Mar 12 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 Python
python网络编程调用recv函数完整接收数据的三种方法
Mar 31 #Python
Python爬取网易云音乐热门评论
Mar 31 #Python
Python中Django发送带图片和附件的邮件
Mar 31 #Python
使用Python对Access读写操作
Mar 30 #Python
使用Python对Excel进行读写操作
Mar 30 #Python
浅述python中argsort()函数的实例用法
Mar 30 #Python
Windows下安装python2和python3多版本教程
Mar 30 #Python
You might like
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
PHP实现邮件群发的源码
2013/06/18 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php生成html文件方法总结
2014/12/01 PHP
php实用代码片段整理
2016/11/12 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
JS类的封装及实现代码
2009/12/02 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python实现的快速排序算法详解
2017/08/01 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
python opencv实现图像配准与比较
2021/02/09 Python
如何实现jdbc性能优化
2012/07/30 面试题
如何设置Java的运行环境
2013/04/05 面试题
面向对象编程的优势是什么
2015/12/17 面试题
幼师自荐信
2013/10/26 职场文书
工厂厂长的职责
2013/12/12 职场文书
生物制药自我鉴定
2014/01/25 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
廉洁自律证明
2015/06/24 职场文书