zoukankan      html  css  js  c++  java
  • 使用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=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(' ')


    {"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'}]

    接着取元组里的字典,逐步拆分即可获得想要的数据。

  • 相关阅读:
    filter 在CSS用的效果
    Safari的CSS HACK方法
    HTML5网页如何让所有的浏览器都能识别语义元素标签样式
    Android/IOS APP界面设计之尺寸规范
    四、添加路由的两种方式
    三、配置
    二、注册登录状态维持(template和session)
    一、最小的Flask应用
    django之图形验证码生成
    django之环境配置
  • 原文地址:https://www.cnblogs.com/mryrs/p/6623272.html
Copyright © 2011-2022 走看看