Skip to content

Commit 994a1b2

Browse files
authored
Merge pull request mouredev#3680 from hectorio23/hectorio23
#20 - Python
2 parents fa3f1a5 + f0c01c7 commit 994a1b2

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
#! /bin/python3.11
2+
# Autor: Héctor Adán
3+
# GitHub: https://github.com/hectorio23
4+
import http.client
5+
import json
6+
7+
'''
8+
* EJERCICIO
9+
* Utilizando un mecanismo de peticiones HTTP de tu lenguaje, realiza
10+
* una petición a la web que tú quieras, verifica que dicha petición
11+
* fue exitosa y muestra por consola el contenido de la web.
12+
*
13+
* DIFICULTAD EXTRA (opcional):
14+
* Utilizando la PokéAPI (https://pokeapi.co), crea un programa por
15+
* terminal al que le puedas solicitar información de un Pokémon concreto
16+
* utilizando su nombre o número.
17+
* - Muestra el nombre, id, peso, altura y tipo(s) del Pokémon
18+
* - Muestra el nombre de su cadena de evoluciones
19+
* - Muestra los juegos en los que aparece
20+
* - Controla posibles errores
21+
'''
22+
23+
##################################################
24+
################## EJERCICIO #####################
25+
##################################################
26+
27+
HOSTNAME = 'www.python.org'
28+
29+
# Se crea una instancia de HTTPSConnection
30+
connection = http.client.HTTPSConnection(
31+
host = HOSTNAME, # Pagina de la documentacion de Python
32+
)
33+
34+
# Se realiza la peticion al servidor
35+
connection.request(method='GET', url="/")
36+
37+
# Se obtiene el resultado de la peticion
38+
response = connection.getresponse()
39+
40+
# Devuelve '+' si el status code se encuentra entre el rango 200 - 299 los cuales son códigos de exito
41+
print(f"[{ '+' if 200 <= response.code < 300 else '-'}] Peticion al servidor { HOSTNAME } retornó un código { response.code }")
42+
print("Respuesta en binario: \n")
43+
if 200 <= response.code < 300: print(response.read())
44+
45+
46+
##################################################
47+
################ EJERCICIO EXTRA #################
48+
##################################################
49+
50+
import http.client
51+
52+
poke_name_id = input("\nIngrese el nombre/id de tu pokemon favorito: ").lower()
53+
54+
poke_conn = http.client.HTTPSConnection("pokeapi.co")
55+
poke_conn.request("GET", f"/api/v2/pokemon/{ poke_name_id }")
56+
poke_resp = poke_conn.getresponse()
57+
poke_data = poke_resp.read().decode("utf-8")
58+
59+
if poke_resp.code == 200:
60+
poke_json = json.loads(poke_data)
61+
poke_name = poke_json["name"].upper()
62+
poke_id = poke_json["id"]
63+
poke_weight = poke_json["weight"] / 10
64+
poke_height = poke_json["height"] / 10
65+
poke_types = [typ["type"]["name"].capitalize() for typ in poke_json["types"]]
66+
poke_evo_url = poke_json["species"]["url"]
67+
poke_games = [entry["version"]["name"] for entry in poke_json["game_indices"]]
68+
69+
poke_conn.request("GET", poke_evo_url)
70+
evo_resp = poke_conn.getresponse()
71+
evo_data = evo_resp.read().decode("utf-8")
72+
73+
if evo_resp.code == 200:
74+
evo_json = json.loads(evo_data)
75+
if "chain" in evo_json and evo_json["chain"]:
76+
poke_evo_chain = [evo_poke["species"]["name"].capitalize() for evo_poke in evo_json["chain"]["evolves_to"]]
77+
else:
78+
poke_evo_chain = [poke_name]
79+
80+
print(f"Nombre del pokemom: { poke_name }")
81+
print(f"ID: { poke_id }")
82+
print(f"Peso del pokemon: { poke_weight } kg")
83+
print(f"Altura: { poke_height } mts")
84+
print(f"Tipo(s): {', '.join(poke_types)}")
85+
print(f"Cadena de evolución: {' -> '.join(poke_evo_chain)}")
86+
print(f"Aparece en los juegos: {', '.join(poke_games)}")
87+
else:
88+
print("Error al obtener datos de la cadena de evolución")
89+
else:
90+
print("Error al obtener datos del Pokémon")

0 commit comments

Comments
 (0)