Skip to content

Commit 7843dbd

Browse files
authored
Merge pull request #9018 from barrancus/patch-2
#20 - Python
2 parents 196c767 + 047fbdb commit 7843dbd

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# 20 - Python
2+
#
3+
# EJERCICIO:
4+
# Utilizando un mecanismo de peticiones HTTP de tu lenguaje, realiza
5+
# una petición a la web que tú quieras, verifica que dicha petición
6+
# fue exitosa y muestra por consola el contenido de la web.
7+
#
8+
# DIFICULTAD EXTRA (opcional):
9+
# Utilizando la PokéAPI (https://pokeapi.co), crea un programa por
10+
# terminal al que le puedas solicitar información de un Pokémon concreto
11+
# utilizando su nombre o número.
12+
# - Muestra el nombre, id, peso, altura y tipo(s) del Pokémon
13+
# - Muestra el nombre de su cadena de evoluciones
14+
# - Muestra los juegos en los que aparece
15+
# - Controla posibles errores
16+
#
17+
18+
import requests
19+
from bs4 import BeautifulSoup as bs
20+
import json
21+
22+
class Counter:
23+
def __iter__(self):
24+
self.a = 1
25+
return self
26+
27+
def __next__(self):
28+
x = self.a
29+
self.a += 1
30+
return x
31+
32+
def serparacion(cadena) -> str:
33+
global contador
34+
print(f'\nEjercicio {next(contador)}. {cadena * 20}')
35+
36+
def ejercicio() -> None:
37+
serparacion("_:_")
38+
web = requests.get("https://www.as.com")
39+
if web.status_code == 200:
40+
testweb = bs(web.text, features="lxml")
41+
print(testweb)
42+
43+
def extra() -> None:
44+
serparacion("_:_")
45+
# Busqueda recurente fases evolucion
46+
def rev_poke_chain(chain) -> list:
47+
test = []
48+
if type(chain) == list:
49+
for menta in chain:
50+
chain = menta
51+
if "evolves_to" in chain.keys() and len(chain["evolves_to"]) != 0:
52+
test = rev_poke_chain(chain["evolves_to"])
53+
test.append(chain["species"]["name"])
54+
return test
55+
56+
while True:
57+
print("\nPor favor inserta el nº o el nombre del Pokemon que quieres buscar.\nInserta 0 para salir.")
58+
search_pokemon = input("ID/Nombre: ")
59+
if search_pokemon == "0":
60+
break
61+
pokeapi = requests.get(f"https://pokeapi.co/api/v2/pokemon/{search_pokemon}/")
62+
if pokeapi.status_code == 200:
63+
search_pokemon_info = json.loads(pokeapi.text)
64+
poke_form = search_pokemon_info["forms"]
65+
for element in poke_form:
66+
try:
67+
poke_name = element["name"]
68+
except:
69+
pass
70+
poke_number = search_pokemon_info["id"]
71+
poke_height = search_pokemon_info["height"]
72+
poke_weight = search_pokemon_info["weight"]
73+
poke_game_indices = search_pokemon_info["game_indices"]
74+
poke_game_name=[]
75+
for element in poke_game_indices:
76+
version = element["version"]
77+
poke_game_name.append(version["name"])
78+
79+
poke_weight = (poke_weight * 0.453592)
80+
poke_height = (poke_height * 2.54)
81+
print(f'\nEl Pokemon {poke_name.upper()} es el id {poke_number}, tiene una altura de {poke_height:n} cm y un peso de {poke_weight:n} kilos.')
82+
print(f'El Pokemon {poke_name.upper()} aparede en los juegos {poke_game_name}')
83+
pokeapi2 = requests.get(f"https://pokeapi.co/api/v2/pokemon-species/{search_pokemon}/")
84+
search_pokemon_info2 = json.loads(pokeapi2.text)
85+
evol_chain = search_pokemon_info2["evolution_chain"]
86+
pokeapi3 = requests.get(evol_chain["url"])
87+
search_pokemon_evol = json.loads(pokeapi3.text)
88+
poke_chain = search_pokemon_evol["chain"]
89+
chain = rev_poke_chain(poke_chain)
90+
print(f'El Pokemon {poke_name.upper()} tiene la siguiente cadena de evolucion {chain}.\n')
91+
92+
elif pokeapi.status_code >= 400 and pokeapi.status_code <= 499:
93+
print('\nProbablemente el Pokemon no existe o no está registrado, prueba con otro.')
94+
elif pokeapi.status_code >= 500 and pokeapi.status_code <= 599:
95+
print('\nNo se puede proceder con la solicitud por problemas con el servidor.')
96+
else:
97+
print('\nError desconocido, prueba con otro.')
98+
99+
def main() -> None:
100+
ejercicio()
101+
extra()
102+
103+
contador = iter(Counter())
104+
if __name__ == "__main__":
105+
main()

0 commit comments

Comments
 (0)