Skip to content

Commit ffd35a1

Browse files
committed
#19 - Python
1 parent 5d3c73b commit ffd35a1

File tree

2 files changed

+171
-0
lines changed

2 files changed

+171
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
"""* Empleando tu lenguaje, explora la definición del tipo de dato
2+
* que sirva para definir enumeraciones (Enum).
3+
* Crea un Enum que represente los días de la semana del lunes
4+
* al domingo, en ese orden. Con ese enumerado, crea una operación
5+
* que muestre el nombre del día de la semana dependiendo del número entero
6+
* utilizado (del 1 al 7).
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un pequeño sistema de gestión del estado de pedidos.
10+
* Implementa una clase que defina un pedido con las siguientes características:
11+
* - El pedido tiene un identificador y un estado.
12+
* - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO.
13+
* - Implementa las funciones que sirvan para modificar el estado:
14+
* - Pedido enviado
15+
* - Pedido cancelado
16+
* - Pedido entregado
17+
* (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...)
18+
* - Implementa una función para mostrar un texto descriptivo según el estado actual.
19+
* - Crea diferentes pedidos y muestra cómo se interactúa con ellos. """
20+
from enum import Enum
21+
22+
# Definición como clase
23+
class DiasSem(Enum):
24+
lunes = 1
25+
martes = 2
26+
miercoles = 3
27+
jueves = 4
28+
viernes = 5
29+
sabado = 6
30+
domingo = 7
31+
32+
# Otra forma de crearla
33+
diasSem = Enum('diasSem', ['lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo'])
34+
35+
# Crea una operación que muestre el nombre del día de la semana dependiendo del número entero utilizado (del 1 al 7).
36+
num_Dia = 0
37+
while True:
38+
num_Dia = int(input('Escribe un número de día de la semana 1 - 7-> '))
39+
if num_Dia >= 1 & num_Dia <= 7:
40+
break
41+
print(diasSem(num_Dia).name)
42+
43+
#EXTRA
44+
class Estado(Enum):
45+
PENDIENTE = 1
46+
ENVIADO = 2
47+
ENTREGADO = 3
48+
CANCELADO = 4
49+
50+
class Pedido():
51+
def __init__(self, id_pedido, estado=Estado.PENDIENTE):
52+
self.id_pedido = id_pedido
53+
self.estado = estado
54+
55+
def enviarPedido(self):
56+
if self.estado == Estado.PENDIENTE:
57+
self.estado = Estado.ENVIADO
58+
else:
59+
print(f"El pedido {self.id_pedido}, ya ha sido enviado o cancelado")
60+
61+
def entregarPedido(self):
62+
if self.estado == Estado.ENVIADO:
63+
self.estado = Estado.ENTREGADO
64+
else:
65+
print(f"El pedido {self.id_pedido}, ya ha sido entregado o cancelado")
66+
67+
def cancelarPedido(self):
68+
if self.estado != Estado.ENTREGADO:
69+
self.estado = Estado.CANCELADO
70+
else:
71+
print(f"El pedido {self.id_pedido}, no se puede cancelar, ya ha sido entregado")
72+
73+
def verEstado(self):
74+
print(f'El pedido número {self.id_pedido} está: {self.estado.name}')
75+
76+
pedido1 = Pedido(1)
77+
pedido1.verEstado()
78+
79+
pedido1.enviarPedido()
80+
pedido1.verEstado()
81+
82+
pedido1.entregarPedido()
83+
pedido1.verEstado()
84+
85+
pedido1.cancelarPedido()
86+
pedido1.verEstado()
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
"""* EJERCICIO:
2+
* Utilizando un mecanismo de peticiones HTTP de tu lenguaje, realiza
3+
* una petición a la web que tú quieras, verifica que dicha petición
4+
* fue exitosa y muestra por consola el contenido de la web.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Utilizando la PokéAPI (https://pokeapi.co), crea un programa por
8+
* terminal al que le puedas solicitar información de un Pokémon concreto
9+
* utilizando su nombre o número.
10+
* - Muestra el nombre, id, peso, altura y tipo(s) del Pokémon
11+
* - Muestra el nombre de su cadena de evoluciones
12+
* - Muestra los juegos en los que aparece
13+
* - Controla posibles errores"""
14+
import requests
15+
16+
url = 'https://pokeapi.co'
17+
18+
respuesta = requests.get(url)
19+
if respuesta.status_code==200:
20+
print(respuesta.text)
21+
elif respuesta.status_code == 404:
22+
print("La petición no es válida")
23+
elif respuesta.status_code == 500:
24+
print("Error interno del servidor")
25+
26+
# EXTRA
27+
while True:
28+
nombre_pokemon = input("Introduce el nombre o el número del Pokémon, S/s para salir: ")
29+
if nombre_pokemon == 'S' or nombre_pokemon == 's':
30+
break
31+
else:
32+
# Datos generales del Pokémon
33+
url_pokemon = f'https://pokeapi.co/api/v2/pokemon/{nombre_pokemon}'
34+
respuesta = requests.get(url_pokemon)
35+
if respuesta.status_code == 200:
36+
datos = respuesta.json()
37+
print(f'Id->{datos['id']}, Nombre-> {datos['name']}, peso-> {datos['weight']}, altura-> {datos['height']}')
38+
print('Tipo(s):')
39+
for type in datos['types']:
40+
print(f'Tipo-> {type["type"]["name"]}')
41+
42+
# Cadena de evoluciones
43+
url_evoluciones = f'https://pokeapi.co/api/v2/pokemon-species/{nombre_pokemon}'
44+
respuesta = requests.get(url_evoluciones)
45+
if respuesta.status_code == 200:
46+
url = respuesta.json()['evolution_chain']['url']
47+
respuesta = requests.get(url)
48+
if respuesta.status_code == 200:
49+
datos = respuesta.json()
50+
print('EVOLUCIÓN DEL POKEMON')
51+
52+
def evolucion(datos):
53+
print(datos['species']['name'])
54+
if 'evolves_to' in datos:
55+
for evo in datos['evolves_to']:
56+
evolucion(evo)
57+
58+
evolucion(datos['chain'])
59+
60+
elif respuesta.status_code == 400:
61+
print("El nombre o el número del Pokémon no es válido")
62+
elif respuesta.status_code == 500:
63+
print("Error interno del servidor")
64+
65+
# Juegos
66+
respuesta = requests.get(url_pokemon)
67+
if respuesta.status_code == 200:
68+
datos = respuesta.json()
69+
print('JUEGOS: ')
70+
for juego in datos['game_indices']:
71+
print(f'Número-> {juego['game_index']} - versión-> {juego["version"]["name"]} - URL-> {juego["version"]["url"]}')
72+
elif respuesta.status_code == 400:
73+
print("El nombre o el número del Pokémon no es válido")
74+
elif respuesta.status_code == 500:
75+
print("Error interno del servidor")
76+
77+
elif respuesta.status_code == 400:
78+
print("El nombre o el número del Pokémon no es válido")
79+
elif respuesta.status_code == 500:
80+
print("Error interno del servidor")
81+
82+
elif respuesta.status_code == 400:
83+
print("El nombre o el número del Pokémon no es válido")
84+
elif respuesta.status_code == 500:
85+
print("Error interno del servidor")

0 commit comments

Comments
 (0)