Python写的天气查询小程序(内含代码注释)

输入城市名(或相应的城市代码)即可查询该城市的天气情况,并且还可以查询近四天的天气状况:
import urllib.request
import gzip
import json
print('------天气查询------')
def get_weather_data() :
    city_name = input('请输入要查询的城市名称:')
    url1 = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)
    #url2 = 'http://wthrcdn.etouch.cn/weather_mini?citykey=101010100'
    #网址1只需要输入城市名,网址2需要输入城市代码
    #print(url1)
    weather_data = urllib.request.urlopen(url1).read()
    #读取网页数据
    weather_data = gzip.decompress(weather_data).decode('utf-8')
    #解压网页数据
    weather_dict = json.loads(weather_data)
    #将json数据转换为dict数据
    return weather_dict

def show_weather(weather_data):
    weather_dict = weather_data 
    #将json数据转换为dict数据
    if weather_dict.get('desc') == 'invilad-citykey':
        print('你输入的城市名有误,或者天气中心未收录你所在城市')
    elif weather_dict.get('desc') =='OK':
        forecast = weather_dict.get('data').get('forecast')
        print('城市:',weather_dict.get('data').get('city'))
        print('温度:',weather_dict.get('data').get('wendu')+'℃ ')
        print('感冒:',weather_dict.get('data').get('ganmao'))
        print('风向:',forecast[0].get('fengxiang'))
        print('风级:',forecast[0].get('fengli'))
        print('高温:',forecast[0].get('high'))
        print('低温:',forecast[0].get('low'))
        print('天气:',forecast[0].get('type'))
        print('日期:',forecast[0].get('date'))
        print('*******************************')
        four_day_forecast =input('是否要显示未来四天天气,是/否:')
        if four_day_forecast == ("是" or "Y" or "y"):
            for i in range(1,5):
                print('日期:',forecast[i].get('date'))
                print('风向:',forecast[i].get('fengxiang'))
                print('风级:',forecast[i].get('fengli'))
                print('高温:',forecast[i].get('high'))
                print('低温:',forecast[i].get('low'))
                print('天气:',forecast[i].get('type'))
                print('--------------------------')
        if four_day_forecast==("否" or "Y" or "y "):
            print("欢迎下次使用!")
            
    print('***********************************')

show_weather(get_weather_data())

以下是程序输出结果:

温度: 3℃ 
感冒: 昼夜温差很大,易发生感冒,请注意适当增减衣服,加强自我防护避免感冒。
风向: 南风
风级: 
高温: 高温 4℃
低温: 低温 -10℃
天气: 晴
日期: 9日星期五
*******************************
是否要显示未来四天天气,是/否:是
日期: 10日星期六
风向: 西北风
风级: 
高温: 高温 4℃
低温: 低温 -8℃
天气: 多云
--------------------------
日期: 11日星期天
风向: 东南风
风级: 
高温: 高温 10℃
低温: 低温 0℃
天气: 晴
--------------------------
日期: 12日星期一
风向: 西南风
风级: 
高温: 高温 15℃
低温: 低温 2℃
天气: 晴
--------------------------
日期: 13日星期二
风向: 西南风
风级: 
高温: 高温 17℃
低温: 低温 2℃
天气: 晴
--------------------------
***********************************
>>> 

 
  

你可能感兴趣的:(Python语言)