赣州新闻网

首页 / 科技

Python入门:简单写一个查询实时天气的Python程序

2020-04-09 · 赣州新闻网 · 科技

前言:

近期刚入门Python,所以一段时间内发布的Python文章多以激发学习兴趣为主,不会有很高深的算法等等;我也会定期分享一些有意思的Python程序

废话不多说,我们先来看一下最后的效果:

Python入门:简单写一个查询实时天气的Python程序


Python入门:简单写一个查询实时天气的Python程序

这= 8 T $里可能有人就要问了,为什么不写GUI,当然是因为懒K B U n ?啦

Python入门:简单写一个查询实时天气的Python程序

完成这个程序你需要:

Python的基础开发环境:这一点本文不赘述,网上的教程很多,本文的环境是pythoB L 1 V _ r !n3.7;

pyinstall模块:使用pip下载,主要用来将你的python程序打包成Windows的可执行文件,这样在没有pythT 2 i 0 = q Aon环境的) 4 I ^ t q Q 5 N计算机上也可以使用;

requests模块:一般来说是自带的模块,没有的话就pip install;主要用于get对api的请e 2 A :求;

正文开始:

要想获取实时的天气数据,网上其实有很多的2 # 2 ; w免费api可以使用,例如百度开放平台,和风,墨迹天气等等等;未来我会写一篇关于Python爬虫的文章,来教大家如何爬取网@ 0 ^ #站上的实时天气;

这里因为写上一篇文章的时候已e X _ v 5 B经注册了和风天气的开发者,本篇文章我们依然以和风的api为例:

如果不知道如何使用他的api,大家可以看一下我的上一篇文章,里面有详细介绍

(顺手点W ~ $ S c }个关注p % y # y G呗≧◉◡◉≦)

首先我们导入requests模块,并get他的返回值打印出来:

import req] r U Ruests

place=input(\'请输入所在地点,可精确到区县:\')

url=\'https://free-api.heweather.netD { l Q z 5 f L/s6/weathe# = N 1 _ Qr/forecast?locaz , - A Vtion=\'+place+\'&key=#\' #key就隐藏了,到时候大家填上自己S g ? 9 k w A的key就行

res=requests.get(url).json()

print(res)

然后就可5 K a 3 ^ 0以看到如下Z R L R / u q G 0内容:

Python入门:简单写一个查询实时天气的Python程序

我们可以看和风的开发文档,了解一下这些字段都是代表什么意思

Python入门:简单写一个查询实时天气的Python程序


Python入门:简单写一个查询实时天气的Python程序


Python入门:简单写一个查询实时天气的Python程序

所以我们就可以提取我们想要的字段了:

首先O T ; r我们要考虑到的一个状况是:如果我们一不小心输入了~ 3 5 N k ( u错误的地理位置信息怎么办,例如不存在的地方,打错了字等等,那- w 6 N a + K么我们这里就要用到一个status的返回值,我们叫做接口状态,只有当@ t c T请求的数据正确时,它才会返回一个值叫做‘ok’,所以我们可以在程序的开始加一个判断条件:

while status!=\'ok\':

place = input(\'输入地点无法找到,请重新输入:\')

url = \'https://free-api.heweao 7 X 8 . l n y mther.net/s6/weather/forecast?location=\' + place + \'&key=#6 $ _\'

res = requests.get(url).json()

status = res

它的意P $ ? Q思是,当状态返回不等于‘ok’时,开始循环,重新对place进行赋值,重新发送请求,重新定义接口状态;

到& L q Z , +这个时候我们就可以h ] M来慢慢提取我们想要的元素了:

#地区相关

admin_v O g ( t M i Uarea=res #获取到的省级

city=res #获取到的市级

stay=res #获取到的区县级

update=res #获取数据的当日时间,精确到分钟

tz=res #当地的时区

#温度相关

tmp_max=res Zily_forecast\'] #当天最高气温

tmp_max_2=res #第二天最高气温

tmp_max_3=res qher6N L t m Q S t V\'] #第三天最高气温

tmp_min=resg 9 ( L O ] I #当天最低气温

tmp_m_2=res #第二天最低气温

tmp_min_3=r 2 ~ l o o N R ,es #第三天最低气温

#天/ o t { p k Q h s气状况描述

conQ 4 ~ Gd_txt_d=res #当天日间天气状况描述

#降水概% V B Z 2率

pop=res #当天降水概率

最后就是我们要开始输出我们exU 5 ! f D k 2 }e文件

Python入门:简单写一个查询实时天气的Python程序


最后附上源码:

import requests

place=input(\'请输入所在地点,可精确到区县:\')

url=\'https://free-api.heweather.net/s6/weather/forecast?location=\'+place+\'&keyL R Y F P s=04e8effac2cf46ad9cfddd3e33} 7 f o30ae32\'

res=requests.get(url).json()

print(res)

status=res

while statu~ % C P X 4s!=\'ok\':

pF p p r { #lace = input(\'输入地点无法找到,请] M + *重新输入:\')

url = \'https://free-api.heweather.net/s6/weather/forecast?loca: 4 R w Rtion=\' + place + \'&key=04e8effac2cf46ad9cfddd3e3330ae32\'

res = requests.get(url).json()

status = res 2 q A i , - x\'status\']

#地区相关

admin_area=res #获取到的省级

city=res #获取到的市级

stay=res #获取到的区县B q E f # + 5 W级

update=res #获取数据的当日时间,精确到分钟

tz=res #当地的时区

#温度相关

tmp_max=res #当天最高气温

tmp_max_2=res #第二天最高气温

tmp_max_3=res #第三天最高气温

tmp_min=res #当天最低气温

tmp_m_2=res #第二天最低气温

tmp_min_3=resM U h $ t i w u Y #第三天最低气温

#天气状况描述

cond_txt_d=res #当天日间天气1 Q 8 s状况描述

pop=res #当天降水概率

print(\'最近` ! r N 0一次获取数据时间为:\'+update+\'\\n您所在的地区为:\'+ado l y $ Dmin_area+\'省\'+ci/ F F dty+\'市\'+stay+\'区(县)\'+\'\\n时区是:东\'+tz+\'区\')

print(\'今天最高气温为:\) x 8 Y'+tmp_max+\'度\'+\'} 7 H G 4 .\n最低_ z &气温为:\'+tmp_min+\'度\')

print(\'天气状况为:\'+cond_txt_d+\'\\n降水概率为\'+pop+\'%\')

input(\'输入任意键退出\')

文章请求接口代表内容结尾有意寻乌天气