|
| 1 | +""" |
| 2 | +* EJERCICIO: |
| 3 | +* Utilizando un mecanismo de peticiones HTTP de tu lenguaje, realiza |
| 4 | +* una petición a la web que tú quieras, verifica que dicha petición |
| 5 | +* fue exitosa y muestra por consola el contenido de la web. |
| 6 | +* |
| 7 | +* DIFICULTAD EXTRA (opcional): |
| 8 | +* Utilizando la PokéAPI (https://pokeapi.co), crea un programa por |
| 9 | +* terminal al que le puedas solicitar información de un Pokémon concreto |
| 10 | +* utilizando su nombre o número. |
| 11 | +* - Muestra el nombre, id, peso, altura y tipo(s) del Pokémon |
| 12 | +* - Muestra el nombre de su cadena de evoluciones |
| 13 | +* - Muestra los juegos en los que aparece |
| 14 | +* - Controla posibles errores |
| 15 | +""" |
| 16 | + |
| 17 | +import requests |
| 18 | + |
| 19 | +response_one = requests.get( |
| 20 | + "https://dummyapi.io/data/v1/user/", |
| 21 | + headers= { |
| 22 | + "app-id": "62b0433d2dfd91d4bf56c584" |
| 23 | + } |
| 24 | +) |
| 25 | + |
| 26 | +if response_one.status_code == 200: |
| 27 | + data = response_one.json() |
| 28 | + result = data["data"][0] |
| 29 | + print(result) |
| 30 | +else: |
| 31 | + print("La solicitud no fue extisosa. Codigo de estado:", response_one.status_code) |
| 32 | + |
| 33 | + |
| 34 | +############ -------------------------------- EXTRA ----------------------------------- ############################## |
| 35 | + |
| 36 | +def info_pokemon(id_or_name): |
| 37 | + response = requests.get(f"https://pokeapi.co/api/v2/pokemon/{id_or_name}") |
| 38 | + |
| 39 | + if response.status_code == 200: |
| 40 | + data = response.json() |
| 41 | + |
| 42 | + name = data["name"] |
| 43 | + id = data["id"] |
| 44 | + weight = data["weight"] |
| 45 | + height = data["height"] |
| 46 | + pokemon_type = [tipo["type"]["name"].capitalize() for tipo in data["types"]] |
| 47 | + |
| 48 | + # Obtener información sobre la cadena de evolución |
| 49 | + species_url = data["species"]["url"] |
| 50 | + species_response = requests.get(species_url) |
| 51 | + if species_response.status_code == 200: |
| 52 | + species_data = species_response.json() |
| 53 | + evolution_url = species_data.get("evolution_chain", {}).get("url") |
| 54 | + if evolution_url: |
| 55 | + evolution_response = requests.get(evolution_url) |
| 56 | + if evolution_response.status_code == 200: |
| 57 | + evolution_data = evolution_response.json() |
| 58 | + evolution_chain = [evolution_data.get("chain", {}).get("species", {}).get("name", "").capitalize()] |
| 59 | + while evolution_data.get("chain", {}).get("evolves_to"): |
| 60 | + evolution_data = evolution_data["chain"]["evolves_to"][0] |
| 61 | + evolution_chain.append(evolution_data.get("species", {}).get("name", "").capitalize()) |
| 62 | + else: |
| 63 | + evolution_chain = ["No se encontro informacion de evolucion"] |
| 64 | + else: |
| 65 | + evolution_chain = ["No se encontro URL de cadena de evolucion"] |
| 66 | + else: |
| 67 | + evolution_chain = ["No se encontro informacion de la especie"] |
| 68 | + |
| 69 | + # Obtener los nombres de los juegos en los que aparece el Pokemon |
| 70 | + game_names = [game["version"]["name"].replace("-", " ").capitalize() for game in data["game_indices"]] |
| 71 | + |
| 72 | + print(f"Nombre del Pokemon: {name.capitalize()}") |
| 73 | + print(f"ID del Pokemon: {id}") |
| 74 | + print(f"Peso: {weight}") |
| 75 | + print(f"Altura: {height}") |
| 76 | + print(f"Tipo de Pokemon: {pokemon_type}") |
| 77 | + print(f"Cadena de evolucion: {', '.join(evolution_chain)}") |
| 78 | + print(f"Juegos en los que aparece: {', '.join(game_names)}") |
| 79 | + |
| 80 | + else: |
| 81 | + print("La solicitud no fue exitosa. Codigo de estado:", response.status_code) |
| 82 | + |
| 83 | +while True: |
| 84 | + informacion = input("Ingrese el nombre o ID del Pokemon o 'salir' para salir: ").lower() |
| 85 | + if informacion == "salir": |
| 86 | + break |
| 87 | + else: |
| 88 | + info_pokemon(informacion) |
| 89 | + print() |
| 90 | + |
0 commit comments