这里有新鲜出炉的 Python 入门,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
本文主要介绍了使用 python 遍历指定城市的一周气温的实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示。
把城市名字写到一个列表里这样可以方便的添加城市。并附有详细注释
- 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, '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'
- }]接着取元组里的字典,逐步拆分即可获得想要的数据。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持 PHPERZ!
来源: http://www.phperz.com/article/17/0504/332906.html