Assignment2

主要就是扔到DataFrame里,其他的就能顺带着解决了

这几天学学html,过两天重新学学写爬虫(闲)

# -*- coding: utf-8 -*-
"""
Spyder Editor
IC2140/TM3300
TMA Template for Exercise 3

"""

import requests
import pandas as pd
import json
import sys, getopt

dUpdate=""
weather=pd.DataFrame({'A' : []})
#%%
def getData():
    global dUpdate,weather
    url="https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=rhrread&lang=en"
    response = requests.get(url)
    data = response.text
    jdata = json.loads(data)
    dTemp=jdata['temperature']['data']
    dRain=jdata['rainfall']['data']
    dUpdate=jdata['updateTime']
    
    dfTemp=pd.DataFrame(dTemp)
    dfRain=pd.DataFrame(dRain)

### Your code
### Q1
###   

    weather=pd.merge(dfTemp,dfRain,on='place',how='outer')
    weather=weather.set_index(weather['place'])
    
    weather=weather.drop(columns='place')
    weather=weather.sort_index()
    weather=weather[['unit_y','max','main','value','unit_x']]

#%%
def getDateTime(sDateTime):
    sDate=sDateTime.split("T")[0]
    sTime=sDateTime.split("T")[1].split("+")[0]
    return sDate,sTime
#%%
def getTempRain(Region,weather):
    nTemp=-1
    nRain=-1
### Your Code
### Q2
###    
    tmp1=weather.loc[Region,'value']
    if not(pd.isnull(tmp1)):
        nTemp=tmp1
    tmp2=weather.loc[Region,'main']
    if tmp2!='FALSE' and (not(pd.isnull(tmp2))):
        nRain=tmp2
    return nTemp,nRain       

#%%
def Report(Place,cTemp, cRain,cDate,cTime):
    if cTemp==-1 and cRain==-1:
        print('No record for {}'.format(Place))
        return
    print("-----------------------------------------------")
    print("Current Weather Summary on {} at {}".format(cDate,cTime))
    print("Location: {}".format(Place))
### Your code
### Q3
###   
    if cTemp!=-1: print("Current Temperature: {:.1f} C".format(cTemp))
    if cRain!=-1:
        if cRain<0.05: print('No rainfall for the last hour')
        else: print("Rainfall for the last hour: {:.1f} mm".format(cRain))
    print("----------------End of Report-----------------")
 
#%%       
mHELP = 'weather.py -r Region'

def main(argv):
    try:
        opts, args = getopt.getopt(argv,"r:")
    except getopt.GetoptError:
        print (mHELP)
        sys.exit(2)    
    for opt, arg in opts:
        if opt == '-r':
            sDate,sTime=getDateTime(dUpdate)
            nTemp,nRain=getTempRain(arg,weather)
### Your Code
### Q4
###   
            Report(arg,nTemp,nRain,sDate,sTime)
            sys.exit()
    print(mHELP)            
            
#    LastReport()
if (__name__ == "__main__"):
    getData()
    main(sys.argv[1:])
else:
##  Unit Test for Q1, Q2 and Q3    
    print("Testing")
    getData()
    

posted @ 2021-06-09 01:15  Duan2baka  阅读(145)  评论(0编辑  收藏  举报