Python入门:简单写一个查询实时天气的Python程序
前言:
近期刚入门Python,所以一段时间内发布的Python文章多以激发学习兴趣为主,不会有很高深的算法等等;我也会定期分享一些有意思的Python程序
废话不多说,我们先来看一下最后的效果:
这= 8 T $里可能有人就要问了,为什么不写GUI,当然是因为懒K B U n ?啦
完成这个程序你需要:
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内容:
我们可以看和风的开发文档,了解一下这些字段都是代表什么意思
所以我们就可以提取我们想要的字段了:
首先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文件
最后附上源码:
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(\'输入任意键退出\')