處于興趣,寫了一個遍歷指定城市五天內的天氣預報,并轉為華氏度顯示。
把城市名字寫到一個列表里這樣可以方便的添加城市。并附有詳細注釋
import requestsimport 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=0high=2for 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,'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'}]接著取元組里的字典,逐步拆分即可獲得想要的數據。
新聞熱點
疑難解答