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

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

  • 相关阅读:
    BZOJ 3205 [Apio2013]机器人 ——斯坦纳树
    BZOJ 3782 上学路线 ——动态规划 Lucas定理 中国剩余定理
    HDU 1423 Greatest Common Increasing Subsequence ——动态规划
    BZOJ 3309 DZY Loves Math ——莫比乌斯反演
    POJ 1038 Bugs Integrated, Inc. ——状压DP
    POJ 3693 Maximum repetition substring ——后缀数组
    POJ 2699 The Maximum Number of Strong Kings ——网络流
    POJ 2396 Budget ——有上下界的网络流
    BZOJ 4650 [Noi2016]优秀的拆分 ——后缀数组
    源码安装python
  • 原文地址:https://www.cnblogs.com/mryrs/p/6623272.html
Copyright © 2011-2022 走看看