使用python遍历指定城市的一周气温
处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示。
把城市名字写到一个列表里这样可以方便的添加城市。并附有详细注释
importrequests importjson #定义一个函数避免代码重写多次。 defgettemp(week,d_or_n,date): wendu=data['result']['weather'][week]['info'][d_or_n][date]#对字典进行拆分 returnint(wendu) defgetft(t): ft=t*1.8+32 returnfloat(str(ft)[0:4]) cities=['保定','北京','上海','武汉','郑州','齐齐哈尔']#这里可以指定想要遍历的城市 url='http://api.avatardata.cn/Weather/Query?key=68e75677978441f6872c1106175b8673&cityname='#用于和cities里的城市进行字符串拼接 low=0 high=2 forcityincities: 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,'近五天天气预报:') foriinrange(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'}] 接着取元组里的字典,逐步拆分即可获得想要的数据。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!