Código fuente Sjson
La última parte es la parte principal de la función principal, porque no hay entorno ni pruebas.
Q 1, Q 2, Q 3 han sido probados. Si hay un entorno de prueba, puede probar el cuarto trimestre y las funciones principales.
El cuarto trimestre tiene solo un informe de estado de cuenta (arg, ntemp, nrain, sdate, stime).
Tenga en cuenta que en la sección Q1, se agregó una oración Weather=jdata en la línea 1 del código.
(Vea la imagen, preste atención a la sangría del código fuente en la imagen)
Solicitud de importación
Importar panda como pd
Importar json
Importar al sistema, getopt
dUpdate= " "
Weather=pd. DataFrame({"A":[]})
#
def getData():
Pronóstico meteorológico global
URL = " https://data.weather.gov.hk/weatherAPI/opendata/weather.php?datatype=rhrread amplang=en "
response=requests.get(url)
data=response.text
jdata=json.loads(data)
dTemp=jdata['temperatura']['datos']
dRain=jdata ['Lluvia']['datos']
dUpdate=jdata['updateTime']
dfTemp=pd. Marco de datos
dfRain=pd. Marco de datos (drenaje)
###Tu código
Weather=jdata
df temp . , eje="columnas ", inplace=True)
d lluvia .({ " unidad ": " unidad _ y " }, eje="columnas ", inplace=True)
dt=pd.merge(dfTemp, dfRain, how='outer ', sort=True)
new_columns=['place','unit_y','max','main',' valor ',' unit_x']
dt = dt .reindex(columnas = nuevas _ columnas)
dt.rename({"place":""}, axis="columnas " , inplace=True)
dt.rename({"unit_x":"unit"}, axis="columns ", inplace=True)
dt.rename({" unit_y ": "unidad"}, eje="columnas", inplace=True)
dt.iloc[:, 0]=(lambda s: s . str . ljust(s . str . len()) .
max()))(dt.iloc[:, 0])
dt=dt.to_string(index = False)
Imprimir (dt)
### Q1
###
#
def getDateTime(sDateTime):
sDate=sDateTime.split("T ")[0]
sTime = sdatetime . split(" T ")[1]. split(" "[0]
Fecha y hora de regreso
def getTempRain(región, clima):
nTemp=-1.0
nRain=-1.0
###Tu código
Para el clima['temperatura']['datos']:
if Región==i [ 'lugar']:?
nTemp=i['valor']
Para el clima['lluvia']['datos']:
si Región ==i['lugar']:?
nLluvia=i['max']
## Q2
###
return nTemp, nRain
#
Definir informe (ubicación, cTemp, cRain, cDate, cTime):
Imprimir ("-") p>
print("Resumen del tiempo actual de {} en {}". format(cDate, cTime))
print("Ubicación: {} ". format(ubicación))
p>
###Tu código
Si int(cTemp)==-1 y int(cRain)==-1:
Imprimir(" No hay registro en el área ")
En caso contrario:
si int(cTemp)==-1:
Pasa
En caso contrario:
print("Temperatura actual: . 1f°C " cTemp ")
if int(cRain)==-1:
Pasa
En caso contrario:
If cRain lt0.05:
print("No ha llovido en la última hora")
En caso contrario:
print("Lluvia en la última hora: .1f mm" lluvia ")
###tercer trimestre
###
Print("-End de informe- ")
#
mHELP='weather.py -r Región '
def main(argv):
Pruebe:
opts, args=getopt.getopt(argv, "r:")
Excepto getopt.
GetoptError:
Imprimir (mHELP)
Salida del sistema (2)
Para opt, parámetros en opts:
if opt= = '-r ':
sFecha, sTime=getDateTime(dUpdate)
nTemp, nRain=getTempRain(arg, clima)
###Tu código
Reporte(arg, nTemp, nRain, sDate, sTime)
### Q4
###
sys. )
Imprimir (mHELP)
# LastReport()
if (__name__=="__main__ "):
getData ()
main(sys.argv[1:])
De lo contrario:
# # Pruebas unitarias para q 1, Q2 y Q3
Imprimir("Prueba")
obtenerDatos()