加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 08:29:52 所属栏目:Python 来源:网络整理
导读:处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示。 把城市名字写到一个列表里这样可以方便的添加城市。并附有详细注释 import requestsimport json#定义一个函数 避免代码重写多次。def gettemp(week,d_or_n,date): wendu=data['result']

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

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

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,high)
  dhf=getft(dayhigh)
  nightlow=gettemp(i,'night',low)
  nlf=getft(nightlow)
  nighthigh=gettemp(i,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","18:36"],"15","南风","06:11"],"night":["7","小雨","3","18:37"]}},{"date":"2017-03-28","week":"二","nongli":"三月初一","info":{"dawn":["7","18:37"],"day":["1","多云","06:09"],"18:38"]}},{"date":"2017-03-29","week":"三","nongli":"三月初二","18:38"],"18","06:08"],"北风","18:39"]}},{"date":"2017-03-30","week":"四","nongli":"三月初三","18:39"],"06:06"],"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','night': ['7','小雨','3','南风','18:37'],'15','06:11']},'nongli': '二月三十'},{'date': '2017-03-28','week': '二','info': {'dawn': ['7','18:38'],'day': ['1','多云','06:09']},'nongli': '三月初一'},{'date': '2017-03-29','week': '三','北风','18:39'],'18','06:08']},'nongli': '三月初二'},{'date': '2017-03-30','week': '四','18:40'],'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','dawn': None,'date': '2017-03-26'},{'nongli': '二月三十','info': {'night': ['7','dawn': ['0','date': '2017-03-27'},{'nongli': '三月初一','dawn': ['7','date': '2017-03-28'},{'nongli': '三月初二','date': '2017-03-29'},{'nongli': '三月初三','date': '2017-03-30'}]
接着取元组里的字典,逐步拆分即可获得想要的数据。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读