Skip to content

Commit 583c209

Browse files
Merge branch 'JesusAEE' of github.com:JesusAntonioEEscamilla/roadmap-retos-programacion; branch 'main' of github.com:mouredev/roadmap-retos-programacion into JesusAEE
2 parents 7eba62f + 2d3561a commit 583c209

File tree

9 files changed

+1782
-743
lines changed

9 files changed

+1782
-743
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
|24|[DECORADORES](./Roadmap/24%20-%20DECORADORES/ejercicio.md)|[📝](./Roadmap/24%20-%20DECORADORES/python/mouredev.py)|[▶️](https://youtu.be/jxJOjg7gPG4)|[👥](./Roadmap/24%20-%20DECORADORES/)
6262
|25|[LOGS](./Roadmap/25%20-%20LOGS/ejercicio.md)|[📝](./Roadmap/25%20-%20LOGS/python/mouredev.py)|[▶️](https://youtu.be/y2O6L1r_skc)|[👥](./Roadmap/25%20-%20LOGS/)
6363
|26|[SOLID: PRINCIPIO DE RESPONSABILIDAD ÚNICA](./Roadmap/26%20-%20SOLID%20SRP/ejercicio.md)|[📝](./Roadmap/26%20-%20SOLID%20SRP/python/mouredev.py)|[▶️](https://youtu.be/7NM8FK9G91M)|[👥](./Roadmap/26%20-%20SOLID%20SRP)
64-
|27|[SOLID: PRINCIPIO ABIERTO-CERRADO](./Roadmap/27%20-%20SOLID%20OCP/ejercicio.md)|[📝](./Roadmap/27%20-%20SOLID%20OCP/python/mouredev.py)||[👥](./Roadmap/27%20-%20SOLID%20OCP/)
64+
|27|[SOLID: PRINCIPIO ABIERTO-CERRADO](./Roadmap/27%20-%20SOLID%20OCP/ejercicio.md)|[📝](./Roadmap/27%20-%20SOLID%20OCP/python/mouredev.py)|[▶️](https://youtu.be/o0lSVzu4ur4)|[👥](./Roadmap/27%20-%20SOLID%20OCP/)
6565
|28|[SOLID: PRINCIPIO DE SUSTITUCIÓN DE LISKOV](./Roadmap/28%20-%20SOLID%20LSP/ejercicio.md)|[🗓️ 15/07/24](https://discord.gg/ssrS9zeS?event=1257395660962005113)||[👥](./Roadmap/28%20-%20SOLID%20LSP/)
6666

6767
## Instrucciones
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
/*
2+
* EJERCICIO:
3+
* - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje:
4+
* Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits...
5+
* (Ten en cuenta que cada lenguaje puede poseer unos diferentes)
6+
* - Utilizando las operaciones con operadores que tú quieras, crea ejemplos
7+
* que representen todos los tipos de estructuras de control que existan
8+
* en tu lenguaje:
9+
* Condicionales, iterativas, excepciones...
10+
* - Debes hacer print por consola del resultado de todos los ejemplos.
11+
*
12+
* DIFICULTAD EXTRA (opcional):
13+
* Crea un programa que imprima por consola todos los números comprendidos
14+
* entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3.
15+
*
16+
* Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo.
17+
*/
18+
19+
let a = 5;
20+
let b = 1;
21+
let verdad = true;
22+
let falso = false;
23+
24+
//? Operadores de asignación
25+
26+
console.log(a = b);//asignación
27+
console.log(a += b);//asignación de adición
28+
console.log(a -= b);//asignación de resta
29+
console.log(a /= b);//asignación de multiplicación
30+
console.log(a %= b);//asignación de residuo
31+
console.log(a **= b);//asignación de exponencia
32+
console.log(a <<= b);//asignación de desplazamiento a la izquierda
33+
console.log(a >>= b);//asignación de desplazamiento a la derecha
34+
console.log(a >>>= b);//asignación de desplazamiento a la derecha sin signo
35+
console.log(a &= b);//asignación de AND bit a bit
36+
console.log(a ^= b);//asignación de XOR bit a bit
37+
console.log(a |= b);//asignación de OR bit a bit
38+
console.log(a &&= b);//asignación de AND lógico
39+
console.log(a ||= b);//asignación de OR lógico
40+
console.log(a ??= b);//asignación de anulación lógica
41+
42+
//? Comparación
43+
44+
console.log(a == b);//igual
45+
console.log(a != b);//no es igual
46+
console.log(a === b);//estrictamente igual
47+
console.log(a !== b);//desigualdad estricta
48+
console.log(a > b);//mayor que
49+
console.log(a >= b);//mayar o igual
50+
console.log(a < b);//menor que
51+
console.log(a <= b);//menor o igual
52+
53+
//? Operadores aritméticos
54+
55+
console.log(a % b);//residuo
56+
console.log(a++);//incremento
57+
console.log(a--);//decremento
58+
console.log(a - b);//resta
59+
console.log(a + b);//suma
60+
console.log(a ** b);//exponenciación
61+
62+
//? Operadores bit a bit
63+
64+
console.log(a & b);//AND a nivel de bits
65+
console.log(a | b);//OR a nivel de bits
66+
console.log(a ^ b);//XOR a nivel de bits
67+
console.log(a << b);//desplazamiento a la izquierda
68+
console.log(a >> b);//desplazamiento a la derecha de propagación de signo
69+
console.log(a >>> b);//desplazamiento a la derecha de relleno cero
70+
71+
//? Operaderes lógicos
72+
73+
console.log(a && b);//AND lógico
74+
console.log(a || b);//OR lógico
75+
console.log(!b);//NOT lógico
76+
77+
//? Operadores condicional (ternario)
78+
console.log(a > b ? 'yes' : 'no');
79+
80+
//? Estructuras de control
81+
//* For
82+
for(let i = 0; i < 10; i++){
83+
console.log(i);
84+
}
85+
//* While
86+
87+
let i = 2;
88+
while(i < 10){
89+
if(i % 2 == 0) {
90+
console.log('Número par', i);
91+
}
92+
i++;
93+
}
94+
95+
//* Do While
96+
97+
do {
98+
if(i % 2 == 0){
99+
console.log('Número par', i)
100+
}
101+
i++;
102+
} while (1 < 2);
103+
104+
//* If, else if else
105+
if(i < 2){
106+
console.log('menor que 2');
107+
} else if(i === 2){
108+
console.log('2');
109+
} else {
110+
console.log('mayor que 2')
111+
}
112+
113+
let accion = 'actualizar';
114+
115+
switch(accion) {
116+
case 'listar':
117+
console.log('Acción de listar');
118+
break;
119+
case 'guardar':
120+
console.log('Acción de guardar');
121+
break;
122+
default:
123+
console.log('Acción no reconocida');
124+
}
125+
126+
//! Ejercicio extra
127+
128+
const extra = () => {
129+
for(let i = 10; i <= 55; i++){
130+
if(i % 2 === 0 && i % 3 !== 0 && i !== 16){
131+
console.log(i);
132+
}
133+
}
134+
}
135+
extra();
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
"""
2+
Excepciones
3+
"""
4+
5+
try:
6+
x = 10 / '0'
7+
except ZeroDivisionError:
8+
print("Error de división con 0")
9+
except TypeError as ty:
10+
print(f"Error de tipo: {ty}")
11+
else:
12+
print(x)
13+
finally:
14+
print("Aquí termina el manejo de las excepciones")
15+
16+
try:
17+
print(10/1)
18+
print([1, 2, 3, 4][4])
19+
except Exception as e:
20+
print(f"Se ha producido un error: {e} ({type(e).__name__})")
21+
22+
23+
"""
24+
Extra
25+
"""
26+
### Debe ser entero, positivo y mayor que 0
27+
def condition_ver(number):
28+
if type(number) is float:
29+
raise Exception(f"No se acepta valores flotantes, [{number}] es un valor flotante")
30+
if not type(number) is int:
31+
raise TypeError(f"El tipo de dato debe ser un int, [{number}] no lo es")
32+
if not number > 0:
33+
raise ValueError(
34+
f"El número no puede ser negativo ni 0, [{number}] no cumple con esta condición"
35+
)
36+
37+
38+
39+
def geometric_progression(first_number,reason,position):
40+
try:
41+
condition_ver(first_number)
42+
condition_ver(reason)
43+
condition_ver(position)
44+
except TypeError as e:
45+
print(f"{type(e).__name__}: {e}")
46+
except ValueError as e:
47+
print(f"{type(e).__name__}: {e}")
48+
except Exception as e:
49+
print(f"{type(e).__name__}: {e}")
50+
else:
51+
s = first_number
52+
for i in range(1,position):
53+
s *= reason
54+
print (f"El valor en la {position}º de la progresión geometrica, con valor inicial: {first_number}, y razon: {reason} es: {s}")
55+
finally:
56+
print("Ha terminado el programa")
57+
58+
59+
# geometric_progression(1,0,3)
60+
61+
class StrTypeError(Exception):
62+
pass
63+
64+
def process_params(parameters: list):
65+
66+
if len(parameters) < 3:
67+
raise IndexError()
68+
elif parameters[1] == 0:
69+
raise ZeroDivisionError()
70+
elif type(parameters[2]) == str:
71+
raise StrTypeError("El tercer elemento no puede ser un cadena de texto")
72+
73+
print(parameters[2])
74+
print(parameters[0]/parameters[1])
75+
print(parameters[2] + 5)
76+
77+
try:
78+
process_params([1,2,3,4])
79+
except IndexError as e:
80+
print("El número de elementos de la lista debe ser mayor que dos")
81+
except ZeroDivisionError as e:
82+
print("El segundo elemento de la lista no puede ser un cero (0)")
83+
except StrTypeError as e:
84+
print(f"{type(e).__name__} : {e} ")
85+
except Exception as e:
86+
print(f"Se ha producido un error inesperado: {e} ({type(e).__name__})")
87+
else:
88+
print("No se ha producido ni un error")
89+
finally:
90+
print("El programa finaliza sin deterse")
91+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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+
#EJERCICIO
18+
import requests
19+
20+
def peticion(web):
21+
respuesta = requests.get(web)
22+
23+
if respuesta.status_code == 200:
24+
print("Petición Exitosa")
25+
print(f"Contenido de la web:\n{respuesta.text}\n")
26+
else:
27+
print(f"Fallo al hacer la petición, código {respuesta.status_code}\n")
28+
29+
peticion("https://www.google.es")
30+
peticion("https://retosdeprogramacion.com/roadmap/")
31+
peticion("https://thepiratebay3.com/")
32+
33+
#DIFICULTAD EXTRA
34+
INFO_POKEMON = "https://pokeapi.co/api/v2/pokemon/"
35+
INFO_SPECIES = "https://pokeapi.co/api/v2/pokemon-species/"
36+
37+
def inicio(pokemon):
38+
url = INFO_POKEMON + pokemon
39+
respuesta = requests.get(url)
40+
datos = respuesta.json()
41+
return datos
42+
43+
def datos_simples(datos):
44+
id = datos['id']
45+
peso = datos['weight']
46+
altura = datos['height']
47+
return id, peso, altura
48+
49+
def tipos(datos):
50+
tipos = datos['types']
51+
lista_tipos = []
52+
for tipo in tipos:
53+
lista_tipos.append(tipo['type']['name'])
54+
return lista_tipos
55+
56+
def games(datos):
57+
juegos = datos['game_indices']
58+
lista_juegos = []
59+
for juego in juegos:
60+
lista_juegos.append(juego['version']['name'])
61+
return lista_juegos
62+
63+
def datos_evo(id):
64+
species = INFO_SPECIES + str(id)
65+
respuesta = requests.get(species)
66+
datos = respuesta.json()
67+
evo_url = datos['evolution_chain']['url']
68+
respuesta = requests.get(evo_url)
69+
evo_json = respuesta.json()
70+
return evo_json
71+
72+
def evoluciones(evo_json, lista = []):
73+
lista.append(evo_json['species']['name'])
74+
if "evolves_to" in evo_json:
75+
for evo in evo_json['evolves_to']:
76+
evoluciones(evo)
77+
return lista
78+
79+
def extra():
80+
pokemon = input("Dime el pokemon: ")
81+
pokemon = pokemon.lower()
82+
try:
83+
data = inicio(pokemon)
84+
id, peso, altura = datos_simples(data)
85+
juegos = games(data)
86+
json = datos_evo(id)
87+
evo = evoluciones(json['chain'])
88+
print(f"Pokemon: {pokemon}, id: {id}, peso: {peso}, altura: {altura}")
89+
print(f"Evoluciones: {evo}")
90+
print(f"Juegos: {juegos}")
91+
except requests.exceptions.JSONDecodeError:
92+
print("Pokemon no encontrado")
93+
94+
extra()
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Explora el concepto de callback en tu lenguaje creando un ejemplo
4+
* simple (a tu elección) que muestre su funcionamiento.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Crea un simulador de pedidos de un restaurante utilizando callbacks.
8+
* Estará formado por una función que procesa pedidos.
9+
* Debe aceptar el nombre del plato, una callback de confirmación, una
10+
* de listo y otra de entrega.
11+
* - Debe imprimir un confirmación cuando empiece el procesamiento.
12+
* - Debe simular un tiempo aleatorio entre 1 a 10 segundos entre
13+
* procesos.
14+
* - Debe invocar a cada callback siguiendo un orden de procesado.
15+
* - Debe notificar que el plato está listo o ha sido entregado.
16+
*/ """
17+
18+
#EJERCICIO
19+
def multiplicar(numeros):
20+
return numeros[0]*numeros[1]
21+
22+
def llamar(funcion, numeros):
23+
return funcion(numeros)
24+
25+
tupla = (3, 9)
26+
resultado = llamar(multiplicar, tupla)
27+
print(resultado)

0 commit comments

Comments
 (0)