Skip to content

Commit e7fcfde

Browse files
authored
Merge pull request mouredev#6955 from davidrguez98/main
#1 - Python
2 parents b223a47 + eab117f commit e7fcfde

File tree

3 files changed

+346
-0
lines changed

3 files changed

+346
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
""" # #01 OPERADORES Y ESTRUCTURAS DE CONTROL
2+
> #### Dificultad: Fácil | Publicación: 02/01/24 | Corrección: 08/01/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* - Crea ejemplos utilizando todos los tipos de operadores de tu lenguaje:
10+
* Aritméticos, lógicos, de comparación, asignación, identidad, pertenencia, bits...
11+
* (Ten en cuenta que cada lenguaje puede poseer unos diferentes)
12+
* - Utilizando las operaciones con operadores que tú quieras, crea ejemplos
13+
* que representen todos los tipos de estructuras de control que existan
14+
* en tu lenguaje:
15+
* Condicionales, iterativas, excepciones...
16+
* - Debes hacer print por consola del resultado de todos los ejemplos.
17+
*
18+
* DIFICULTAD EXTRA (opcional):
19+
* Crea un programa que imprima por consola todos los números comprendidos
20+
* entre 10 y 55 (incluidos), pares, y que no son ni el 16 ni múltiplos de 3.
21+
*
22+
* Seguro que al revisar detenidamente las posibilidades has descubierto algo nuevo.
23+
*/
24+
```
25+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
26+
27+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
28+
29+
> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**. """
30+
31+
#OPERADORES DE ASIGNACIÓN
32+
33+
x = 4 #x = 2
34+
x += 2 #x = x + 2
35+
x -= 2 #x = x - 2
36+
x *= 2 #x = x * 2
37+
x /= 2 #x = x / 2
38+
x %= 2 #x = x / 2
39+
x **= 2 #x = x ** 2
40+
41+
#OPERADORES ARITMÉTICOS
42+
43+
2 + 2 #4
44+
2 - 2 #0
45+
2 * 2 #4
46+
2 / 2 #1
47+
8 // 4 #2
48+
8 % 4 #0
49+
2 ** 3 #8
50+
51+
#OPERADORES DE COMPARACIÓN
52+
53+
x == "y"
54+
x != "y"
55+
x > "y"
56+
x < "y"
57+
x >= "y"
58+
x<= "y"
59+
60+
#OPERADORES LÓGICOS
61+
62+
True and False = False
63+
True and True = True
64+
65+
True or False = True
66+
True or True = True
67+
68+
not True = False
69+
70+
#OPERADORES BIT
71+
72+
print(bin(27)) = "0b11011"
73+
74+
a = "0b1101"
75+
b = "0b1011"
76+
print(bin(a & b)) = "0b1001" #Si ambas posiciones de números coinciden es 1, si no es 0 (equivalente a AND)
77+
78+
a = "0b1101"
79+
b = "0b1011"
80+
print(bin(a | b)) = "0b1111" #Equivalente a OR
81+
82+
a = 40
83+
print(bin(a)) = "0b101000"
84+
print(bin(~a)) = "-0b101000" #Equivalente a NOT
85+
86+
x = 0b0110 ^ 0b1010 #0b1100
87+
print(bin(x))
88+
#0 xor 1 = 1
89+
#1 xor 0 = 1
90+
#1 xor 1 = 0
91+
#0 xor 0 = 0
92+
93+
a = 0b1000 #0b10
94+
print(bin(a>>2)) #Las unidades se desplazan a la derecha el número de veces que marcamos en el bin, rellenándo los puestos de la izquierda con ceros
95+
96+
a = 0b001 #0b1000
97+
print(bin(a<<3)) #Al contrario que el anterior
98+
99+
#OPERADORES DE IDENTIDAD
100+
101+
a = 10
102+
b = 10
103+
print(a is b) #True
104+
105+
a = 10
106+
b = 10
107+
print(a is not b) #False
108+
109+
#OPERADORES DE MEMBRESÍA
110+
111+
print(3 in[1, 2, 3]) #True
112+
113+
print(3 not in[1, 2, 3]) #False
114+
115+
"""----------------------------------------------------------------------"""
116+
117+
#CONDICIONALES
118+
119+
x = input(int())
120+
121+
if x >= 18:
122+
print("Eres mayor de edad")
123+
else:
124+
print("Eres menor de edad")
125+
126+
#BUCLES
127+
128+
while x >= 18:
129+
print("Eres mayor de edad")
130+
else:
131+
print("Eres menor de edad")
132+
133+
edad = input(int())
134+
for x in edad:
135+
if edad >= 18:
136+
print("Eres mayor de edad")
137+
else:
138+
print("Eres menor de edad")
139+
140+
"""----------------------------------------------------------------------"""
141+
142+
#DIFICULTAD EXTRA
143+
144+
numeros = list(range(10, 56))
145+
146+
for numeros in numeros:
147+
if numeros % 2 == 0 and numeros != 16 and numeros % 3 != 0:
148+
print(numeros)
149+
for numeros in numeros:
150+
if numeros % 2 == 0:
151+
print(numeros)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
""" # #02 FUNCIONES Y ALCANCE
2+
> #### Dificultad: Fácil | Publicación: 08/01/24 | Corrección: 15/01/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* - Crea ejemplos de funciones básicas que representen las diferentes
10+
* posibilidades del lenguaje:
11+
* Sin parámetros ni retorno, con uno o varios parámetros, con retorno...
12+
* - Comprueba si puedes crear funciones dentro de funciones.
13+
* - Utiliza algún ejemplo de funciones ya creadas en el lenguaje.
14+
* - Pon a prueba el concepto de variable LOCAL y GLOBAL.
15+
* - Debes hacer print por consola del resultado de todos los ejemplos.
16+
* (y tener en cuenta que cada lenguaje puede poseer más o menos posibilidades)
17+
*
18+
* DIFICULTAD EXTRA (opcional):
19+
* Crea una función que reciba dos parámetros de tipo cadena de texto y retorne un número.
20+
* - La función imprime todos los números del 1 al 100. Teniendo en cuenta que:
21+
* - Si el número es múltiplo de 3, muestra la cadena de texto del primer parámetro.
22+
* - Si el número es múltiplo de 5, muestra la cadena de texto del segundo parámetro.
23+
* - Si el número es múltiplo de 3 y de 5, muestra las dos cadenas de texto concatenadas.
24+
* - La función retorna el número de veces que se ha impreso el número en lugar de los textos.
25+
*
26+
* Presta especial atención a la sintaxis que debes utilizar en cada uno de los casos.
27+
* Cada lenguaje sigue una convenciones que debes de respetar para que el código se entienda.
28+
*/
29+
```
30+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
31+
32+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
33+
34+
> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**. """
35+
36+
def parametros (str1 = str, str2 = str) -> int:
37+
contador = 0
38+
39+
for i in range(1, 101):
40+
if i % 3 == 0 and i % 5 == 0:
41+
print(str1, str2)
42+
elif i % 3 == 0:
43+
print(str1)
44+
elif i % 5 == 0:
45+
print(str2)
46+
else:
47+
print(i)
48+
contador += 1
49+
return
50+
51+
parametros("hola", "adios")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
""" # #03 ESTRUCTURAS DE DATOS
2+
> #### Dificultad: Media | Publicación: 15/01/24 | Corrección: 22/01/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
10+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
11+
*
12+
* DIFICULTAD EXTRA (opcional):
13+
* Crea una agenda de contactos por terminal.
14+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
15+
* - Cada contacto debe tener un nombre y un número de teléfono.
16+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
17+
* los datos necesarios para llevarla a cabo.
18+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
19+
* (o el número de dígitos que quieras)
20+
* - También se debe proponer una operación de finalización del programa.
21+
*/
22+
```
23+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
24+
25+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
26+
27+
> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**. """
28+
29+
#LISTAS
30+
31+
listas = [1, 2, 3, 4]
32+
print(listas)
33+
34+
listas.append(1) #Inserción
35+
print(listas)
36+
listas.remove(2) #Borrar
37+
print(listas)
38+
listas[1] = 5 #Actualizar
39+
print(listas)
40+
listas.sort() #Ordenar
41+
print(listas)
42+
43+
#TUPLAS
44+
45+
tuplas = (0, 1, 2, 3, 4)
46+
print(tuplas)
47+
48+
tuplas = tuple(sorted(tuplas)) #Ordenar
49+
print(tuplas)
50+
51+
#SETS
52+
53+
my_set = {"David", "Rodriguez", "@davidrguez98", "26"}
54+
print(my_set)
55+
56+
my_set.add("[email protected]") #Inserción
57+
print(my_set)
58+
59+
my_set.remove("David") #Borrar
60+
print(my_set)
61+
62+
#DICCIONARIOS
63+
64+
diccionario = {
65+
"hola" : "1",
66+
"adios" : "2",
67+
"you" : "7"
68+
}
69+
print(diccionario)
70+
71+
print(diccionario["hola"]) #Acceso
72+
73+
diccionario["hey"] = "3" #Incersión
74+
print(diccionario)
75+
76+
diccionario["hey"] = "4" #Actualización
77+
print(diccionario)
78+
79+
del diccionario["adios"] #Borrar
80+
print(diccionario)
81+
82+
diccionario = dict(sorted(diccionario.items())) #Ordenar
83+
print(diccionario)
84+
85+
""" * DIFICULTAD EXTRA (opcional):
86+
* Crea una agenda de contactos por terminal.
87+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
88+
* - Cada contacto debe tener un nombre y un número de teléfono.
89+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
90+
* los datos necesarios para llevarla a cabo.
91+
* - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
92+
* (o el número de dígitos que quieras)
93+
* - También se debe proponer una operación de finalización del programa.
94+
*/ """
95+
96+
def my_agend():
97+
98+
agend = {}
99+
100+
def insert_contact():
101+
phone_number = input("Introduce el número del contacto: ")
102+
if phone_number.isdigit() and len(phone_number) > 0 and len(phone_number) < 12:
103+
agend[name] = phone_number
104+
print(f"El contacto {name} con teléfono {phone_number} se ha añadido correctamente")
105+
else:
106+
print("\nEl teléfono marcado es incorrecto. Introduce un teléfono válido con un máximo de 11 dígitos")
107+
108+
while True:
109+
110+
print("")
111+
print("1. Buscar un contacto.")
112+
print("2. Añade un contacto.")
113+
print("3. Actualiza un contacto.")
114+
print("4. Elimina un contacto.")
115+
print("5. Salir de la agenda.")
116+
selection = input("\nSelecciona una de las opciones anteriores: ")
117+
118+
119+
match selection:
120+
case "1":
121+
name = input("Introduce el nombre del contacto que quiere buscar: ")
122+
if name in agend:
123+
print(f"El número de teléfono del contacto {name} es {agend[name]}")
124+
else:
125+
print("\nEl contacto que ha introducido no está en su agenda")
126+
case "2":
127+
name = input("Introduce el nombre del contacto que quiere añadir: ")
128+
insert_contact()
129+
case "3":
130+
name = input("Introduce el nombre del contacto que quiere actualizar: ")
131+
insert_contact()
132+
case "4":
133+
name = input("Introduce el nombre del contacto que quiere eliminar: ")
134+
if name in agend:
135+
print(f"El contacto {name} ha sido eliminado")
136+
del agend[name]
137+
else:
138+
print(f"\nEl contacto {name} no está en su agenda.")
139+
case "5":
140+
break
141+
case "6":
142+
print("\nLa opción marcada no es correcta. Selecciona un número del 1 al 5.")
143+
144+
my_agend()

0 commit comments

Comments
 (0)