最後壹部分是主要功能的主要部分,因為沒有環境,沒有測試。
Q 1,Q 2,Q 3都測試過。如果有測試環境,可以測試Q4和main函數。
Q4只有壹個語句報告(arg、ntemp、nrain、sdate、stime)。
請註意,在Q1部分中,在代碼的第1行添加了壹個句子weather=jdata。
(見圖,註意圖中源代碼的縮進)
導入請求
進口熊貓作為pd
導入json
導入系統,getopt
dUpdate= " "
天氣=pd。DataFrame({"A":[]})
#%%
def getData():
全球天氣預報
URL = " https://data . weather . gov . hk/weather API/open data/weather . PHP?數據類型= rhrread & amplang=en "
response=requests.get(url)
數據=響應.文本
jdata=json.loads(數據)
dTemp=jdata['溫度']['數據']
dRain=jdata['降雨量']['數據']
dUpdate=jdata['updateTime']
dfTemp=pd。數據幀
dfRain=pd。數據框(排水)
###您的代碼
天氣=jdata
df temp . rename({ " unit ":" unit _ x " },axis="columns ",inplace=True)
d rain . rename({ " unit ":" unit _ y " },axis="columns ",inplace=True)
dt=pd.merge(dfTemp,dfRain,how='outer ',sort=True)
new_columns=['place ',' unit_y ',' max ',' main ',' value ',' unit_x']
dt = dt . reindex(columns = new _ columns)
dt.rename({"place":""},axis="columns ",inplace=True)
dt.rename({"unit_x":"unit"},axis="columns ",inplace=True)
dt.rename({"unit_y":"unit"},axis="columns ",inplace=True)
dt.iloc[:,0]=(lambda s:s . str . ljust(s . str . len()。max()))(dt.iloc[:,0])
dt=dt.to_string(index = False)
打印(dt)
### Q1
###
#%%
def getDateTime(sDateTime):
sDate=sDateTime.split("T")[0]
sTime = sdatetime . split(" T ")[1]。split("+"[0]
返回日期,時間
def getTempRain(地區,天氣):
nTemp=-1.0
nRain=-1.0
###您的代碼
對於天氣['溫度']['數據']:
if Region==i['place']:?
nTemp=i['值']
對於天氣['降雨']['數據']:
if Region==i['place']:?
nRain=i['max']
## Q2
###
return nTemp,nRain
#%%
定義報告(地點、cTemp、cRain、cDate、cTime):
打印(“-”)
print("在{}的{}當前天氣摘要"。格式(cDate,cTime))
print("Location:{} "。格式(位置))
###您的代碼
如果int(cTemp)==-1且int(cRain)==-1:
打印(“區域無記錄”)
否則:
if int(cTemp)==-1:
及格
否則:
print("當前溫度:% . 1f°C " % cTemp ")
if int(cRain)==-1:
及格
否則:
如果cRain & lt0.05:
打印(“最後壹小時沒有降雨”)
否則:
print("過去壹小時的降雨量:%.1f mm" % cRain ")
###第三季度
###
打印("-報告結束-")
#%%
mHELP='weather.py -r Region '
def main(argv):
嘗試:
opts,args=getopt.getopt(argv," r:")
除了getopt。GetoptError:
打印(mHELP)
系統退出(2)
對於opt,opts中的參數:
if opt=='-r ':
sDate,sTime=getDateTime(dUpdate)
nTemp,nRain=getTempRain(arg,weather)
###您的代碼
報告(arg,nTemp,nRain,sDate,sTime)
### Q4
###
sys.exit()
打印(mHELP)
# LastReport()
if (__name__=="__main__ "):
getData()
main(sys.argv[1:])
否則:
# # q 1、Q2和Q3的單元測試
打印(“測試”)
getData()