使用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 相关文章推荐
详解django.contirb.auth-认证
Jul 16 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
Python任务自动化工具tox使用教程
Mar 17 Python
python实现最速下降法
Mar 24 Python
python用700行代码实现http客户端
Jan 14 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 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
第二节 对象模型 [2]
2006/10/09 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
php递归创建目录的方法
2015/02/02 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
python实现简易内存监控
2018/06/21 Python
Django中的文件的上传的几种方式
2018/07/23 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Python线程指南分享
2019/11/19 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
介绍一下#error预处理
2015/09/25 面试题
财务管理个人自荐书范文
2013/11/24 职场文书
班长竞选演讲稿
2014/04/24 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android