首页 > 代码库 > 使用python遍历指定城市的一周气温

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

处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示。
把城市名字写到一个列表里这样可以方便的添加城市。并附有详细注释
1
import requests 2 import json
#定义一个函数 避免代码重写多次。
3 def gettemp(week,d_or_n,date): 4 wendu=data[result][weather][week][info][d_or_n][date] #对字典进行拆分 5 return int(wendu) 6 7 def getft(t): 8 ft=t*1.8+32 9 return float(str(ft)[0:4]) 10 11 cities=[保定,北京,上海,武汉,郑州,齐齐哈尔] #这里可以指定想要遍历的城市 12 url=http://api.avatardata.cn/Weather/Query?key=68e75677978441f6872c1106175b8673&cityname=‘ #用于和cities里的城市进行字符串拼接 13 low=0 14 high=2 15 for city in cities: 16 r = requests.get(url+city) # 最基本的GET请求 17 #print(r.status_code) 获取返回状态200是成功 18 #print(r.text) 打印解码后的返回数据 19 data=http://www.mamicode.com/json.loads(r.text) #返回的json数据被转换为字典类型 20 #print(type(data)) data 的数据类型是字典 所以可以按照字典操作(字典里的列表就按列表操作) 21 print(city,近五天天气预报:) 22 for i in range(5): 23 week=+str(data[result][weather][i][week]) #对字典类型进行逐个拆分 如列表 元组等。 24 daylow=gettemp(i,day,low) 25 dlf=getft(daylow) 26 dayhigh=gettemp(i,day,high) 27 dhf=getft(dayhigh) 28 nightlow=gettemp(i,night,low) 29 nlf=getft(nightlow) 30 nighthigh=gettemp(i,night,high) 31 nhf=getft(nighthigh) 32 print(week,白天气温:,daylow,~,dayhigh,摄氏度,晚上气温:,nightlow,~,nighthigh,摄氏度) 33 print( ,白天气温:,dlf,~,dhf,华氏度,晚上气温:,nlf,~,nhf,华氏度) 34 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遍历指定城市的一周气温