Add exercise of new course 30-days-of-python

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
Manuel Vergara 2023-09-18 01:00:26 +02:00
parent f04e8db31f
commit 3d867aed80
30 changed files with 1075 additions and 0 deletions

View File

@ -0,0 +1,40 @@
# Introducción
Documento original en inglés: [Introduction](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/readme.md)
## Ejercicios
### Ejercicio: Nivel 1
- Comprueba la versión de Python que estás utilizando.
- Abre la terminal interactiva de Python y realiza las siguientes operaciones. Los operandos son 3 y 4.
- suma(+)
- resta(-)
- multiplicación(*)
- módulo(%)
- división(/)
- potenciación(**)
- operador de división entera(//)
- Escribe cadenas de texto en la terminal interactiva de Python con la siguiente información:
- Tu nombre
- Tu apellido
- Tu país
- "Estoy disfrutando de 30 días de Python".
- Comprueba los tipos de datos de los siguientes valores:
- 10
- 9.8
- 3.14
- 4 - 4j
- ['Asabeneh', 'Python', 'Finlandia']
- Tu nombre
- Tu apellido
- Tu país
### Ejercicio: Nivel 2
- Crea una carpeta llamada `day_1` dentro de la carpeta `30DaysOfPython`. Dentro de la carpeta `day_1`, crea un archivo de Python llamado `helloworld.py` y repite las preguntas 1, 2, 3 y 4. Recuerda usar `print()` cuando estés trabajando en un archivo de Python. Navega hasta el directorio donde hayas guardado tu archivo y ejecútalo.
### Ejercicio: Nivel 3
- Escribe un ejemplo para diferentes tipos de datos en Python, como Número (Entero, Flotante, Complejo), Cadena de texto, Booleano, Lista, Tupla, Conjunto y Diccionario.
- Encuentra la distancia euclidiana entre (2, 3) y (10, 8).

View File

@ -0,0 +1,42 @@
## Variables, Funciones Incorporadas
Documento original en inglés: [Variables, Builtin Functions](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)
## Ejercicios
### Ejercicios: Nivel 1
- Dentro de `30DaysOfPython`, crea una carpeta llamada `day_2`. Dentro de esta carpeta, crea un archivo llamado `variables.py`.
- Escribe un comentario en Python que diga 'Día 2: Programación de 30 días en Python'.
- Declara una variable `nombre` y asígnale un valor.
- Declara una variable `apellido` y asígnale un valor.
- Declara una variable `nombre_completo` y asígnale un valor.
- Declara una variable `pais` y asígnale un valor.
- Declara una variable `ciudad` y asígnale un valor.
- Declara una variable `edad` y asígnale un valor.
- Declara una variable `año` y asígnale un valor.
- Declara una variable `esta_casado` y asígnale un valor.
- Declara una variable `es_verdadero` y asígnale un valor.
- Declara una variable `esta_luz_encendida` y asígnale un valor.
- Declara múltiples variables en una sola línea.
### Ejercicios: Nivel 2
- Comprueba el tipo de datos de todas tus variables utilizando la función incorporada `type()`.
- Utilizando la función incorporada `len()`, encuentra la longitud de tu nombre.
- Compara la longitud de tu nombre y tu apellido.
- Declara `5` como `num_uno` y `4` como `num_dos`.
- Suma `num_uno` y `num_dos` y asigna el valor a una variable llamada `total`.
- Resta `num_dos` de `num_uno` y asigna el valor a una variable llamada `diferencia`.
- Multiplica `num_uno` y `num_dos` y asigna el valor a una variable llamada `producto`.
- Divide `num_uno` por `num_dos` y asigna el valor a una variable llamada `division`.
- Utiliza la división de módulo para encontrar `num_dos` dividido por `num_uno` y asigna el valor a una variable llamada `resto`.
- Calcula `num_uno` elevado a la potencia de `num_dos` y asigna el valor a una variable llamada `exp`.
- Encuentra la división de piso de `num_uno` por `num_dos` y asigna el valor a una variable llamada `division_piso`.
- El radio de un círculo es de 30 metros.
- Calcula el área de un círculo y asigna el valor a una variable llamada `area_de_circulo`.
- Calcula la circunferencia de un círculo y asigna el valor a una variable llamada `circunferencia_de_circulo`.
- Toma el radio como entrada del usuario y calcula el área.
- Usa la función incorporada `input` para obtener el nombre, apellido, país y edad de un usuario y almacena los valores en las variables correspondientes.
- Ejecuta `help('keywords')` en la terminal de Python o en tu archivo para verificar las palabras reservadas o palabras clave de Python.

View File

@ -0,0 +1,71 @@
# Operadores
Documento original en inglés: [Operators](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/03_Day_Operators/03_operators.md)
## Ejercicios
1. Declara tu edad como una variable entera.
2. Declara tu altura como una variable de tipo flotante.
3. Declara una variable que almacene un número complejo.
4. Escribe un script que solicite al usuario que ingrese la base y la altura de un triángulo y calcule el área de este triángulo (área = 0.5 x b x h).
```
Ingresa la base: 20
Ingresa la altura: 10
El área del triángulo es 100
```
5. Escribe un script que solicite al usuario que ingrese los lados a, b y c de un triángulo. Calcula el perímetro del triángulo (perímetro = a + b + c).
```
Ingresa el lado a: 5
Ingresa el lado b: 4
Ingresa el lado c: 3
El perímetro del triángulo es 12
```
6. Obtén la longitud y el ancho de un rectángulo utilizando el comando de solicitud (prompt). Calcula su área (área = longitud x ancho) y su perímetro (perímetro = 2 x (longitud + ancho)).
7. Obten el radio de un círculo utilizando el comando de solicitud (prompt). Calcula el área (área = pi x r x r) y la circunferencia (c = 2 x pi x r), donde pi = 3.14.
8. Calcula la pendiente, la intersección en el eje x y la intersección en el eje y de la ecuación y = 2x - 2.
9. La pendiente es (m = y2 - y1 / x2 - x1). Calcula la pendiente y la distancia euclidiana entre el punto (2, 2) y el punto (6, 10).
10. Compara las pendientes en los ejercicios 8 y 9.
11. Calcula el valor de y (y = x^2 + 6x + 9). Intenta usar diferentes valores de x y descubre en qué valor de x y será igual a 0.
12. Encuentra la longitud de 'python' y 'dragon' y crea una declaración falsa de comparación.
13. Utiliza el operador 'and' para verificar si 'on' se encuentra en 'python' y 'dragon'.
14. Espero que este curso no esté lleno de jerga. Usa el operador 'in' para verificar si 'jerga' está en la oración.
15. No hay 'on' ni en dragon ni en python.
16. Encuentra la longitud del texto 'python' y convierte el valor a flotante y luego a cadena.
17. Los números pares son divisibles por 2 y el residuo es cero. ¿Cómo puedes verificar si un número es par o no utilizando Python?
18. Comprueba si la división entera de 7 entre 3 es igual al valor convertido a entero de 2.7.
19. Comprueba si el tipo de '10' es igual al tipo de 10.
20. Comprueba si int('9.8') es igual a 10.
21. Escribe un script que solicite al usuario que ingrese las horas y la tarifa por hora. Calcula el salario de la persona.
```
Ingresa las horas: 40
Ingresa la tarifa por hora: 28
Tus ganancias semanales son 1120
```
22. Escribe un script en Python que muestre la siguiente tabla.
```
1 1 1 1 1
2 1 2 4 8
3 1 3 9 27
4 1 4 16 64
5 1 5 25 125
```

View File

@ -0,0 +1,69 @@
# Cadenas
Documento original en inglés: [Strings](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/04_Day_Strings/04_strings.md)
## Ejercicios
1. Concatena las cadenas 'Thirty', 'Days', 'Of' y 'Python' en una sola cadena, 'Thirty Days Of Python'.
2. Concatena las cadenas 'Coding', 'For' y 'All' en una sola cadena, 'Coding For All'.
3. Declara una variable llamada `company` y asígnala al valor inicial "Coding For All".
4. Imprime la variable `company` usando `print()`.
5. Imprime la longitud de la cadena `company` usando el método `len()` y `print()`.
6. Cambia todos los caracteres a letras mayúsculas usando el método `upper()`.
7. Cambia todos los caracteres a letras minúsculas usando el método `lower()`.
8. Usa los métodos `capitalize()`, `title()` y `swapcase()` para formatear el valor de la cadena 'Coding For All'.
9. Corta la primera palabra de la cadena 'Coding For All'.
10. Comprueba si la cadena 'Coding For All' contiene la palabra 'Coding' utilizando los métodos `index`, `find` u otros.
11. Reemplaza la palabra 'coding' en la cadena 'Coding For All' por 'Python'.
12. Cambia 'Python for Everyone' a 'Python for All' utilizando el método `replace` u otros.
13. Divide la cadena 'Coding For All' usando el espacio como separador (split()).
14. Divide la cadena "Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon" en la coma.
15. ¿Cuál es el carácter en el índice 0 en la cadena 'Coding For All'?
16. ¿Cuál es el último índice de la cadena 'Coding For All'?
17. ¿Qué carácter está en el índice 10 en la cadena "Coding For All"?
18. Crea un acrónimo para el nombre 'Python For Everyone'.
19. Crea un acrónimo para el nombre 'Coding For All'.
20. Usa `index` para determinar la posición de la primera aparición de 'C' en 'Coding For All'.
21. Usa `index` para determinar la posición de la primera aparición de 'F' en 'Coding For All'.
22. Usa `rfind` para determinar la posición de la última aparición de 'l' en 'Coding For All People'.
23. Usa `index` o `find` para encontrar la posición de la primera aparición de la palabra 'because' en la siguiente frase: 'You cannot end a sentence with because because because is a conjunction'.
24. Usa `rindex` para encontrar la posición de la última aparición de la palabra 'because' en la siguiente frase: 'You cannot end a sentence with because because because is a conjunction'.
25. Corta la frase 'because because because' en la siguiente oración: 'You cannot end a sentence with because because because is a conjunction'.
26. Encuentra la posición de la primera aparición de la palabra 'because' en la siguiente oración: 'You cannot end a sentence with because because because is a conjunction'.
27. Corta la frase 'because because because' en la siguiente oración: 'You cannot end a sentence with because because because is a conjunction'.
28. ¿Empieza '\Coding For All' con un subconjunto 'Coding'?
29. ¿Termina 'Coding For All' con un subconjunto 'coding'?
30. '&nbsp;&nbsp; Coding For All &nbsp;&nbsp;&nbsp; &nbsp;', elimina los espacios en blanco a la izquierda y a la derecha en la cadena dada.
31. ¿Cuál de las siguientes variables devuelve True cuando usamos el método `isidentifier()`?
- 30DaysOfPython
- thirty_days_of_python
32. La siguiente lista contiene los nombres de algunas bibliotecas de Python: ['Django', 'Flask', 'Bottle', 'Pyramid', 'Falcon']. Une la lista con una cadena 'hash' con espacio.
33. Usa la secuencia de escape de nueva línea para separar las siguientes oraciones.
```py
Estoy disfrutando de este desafío.
Me pregunto qué sigue.
```
34. Usa la secuencia de escape de tabulación para escribir las siguientes líneas.
```
Nombre Edad País Ciudad
Asabeneh 250 Finlandia Helsinki
```
35. Usa el método de formato de cadena para mostrar lo siguiente:
```
radio = 10
area = 3.14 * radio ** 2
El área de un círculo con radio 10 es de 314 metros cuadrados.
```
36. Haz lo siguiente usando métodos de formato de cadena:
```
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
8 % 6 = 2
8 // 6 = 1
8 ** 6 = 262144
```

View File

@ -0,0 +1,87 @@
# Listas
Documento original en inglés: [List](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/05_Day_Lists/05_lists.md)
## Ejercicios
### Ejercicios: Nivel 1
1. Declarar una lista vacía.
2. Declarar una lista con más de 5 elementos.
3. Encontrar la longitud de tu lista.
4. Obtener el primer elemento, el elemento del medio y el último elemento de la lista.
5. Declarar una lista llamada `mixed_data_types` e inserta tu (nombre, edad, altura, estado civil, dirección).
6. Declarar una variable de lista llamada `it_companies` y asignar los valores iniciales Facebook, Google, Microsoft, Apple, IBM, Oracle y Amazon.
7. Imprime la lista usando `print()`.
8. Imprime el número de empresas en la lista.
9. Imprime la primera, la del medio y la última empresa.
10. Imprime la lista después de modificar una de las empresas.
11. Agrega una empresa de tecnología a `it_companies`.
12. Inserta una empresa de tecnología en el medio de la lista de empresas.
13. Cambia uno de los nombres de `it_companies` a mayúsculas (¡excepto IBM!).
14. Une las empresas de tecnología con una cadena '#; '.
15. Comprueba si cierta empresa existe en la lista `it_companies`.
16. Ordena la lista usando el método `sort()`.
17. Invierte la lista en orden descendente usando el método `reverse()`.
18. Corta las primeras 3 empresas de la lista.
19. Corta las últimas 3 empresas de la lista.
20. Corta la empresa o empresas de tecnología del medio de la lista.
21. Elimina la primera empresa de tecnología de la lista.
22. Elimina la empresa o empresas de tecnología del medio de la lista.
23. Elimina la última empresa de tecnología de la lista.
24. Elimina todas las empresas de tecnología de la lista.
25. Destruye la lista de empresas de tecnología.
26. Une las siguientes listas:
```
front_end = ['HTML', 'CSS', 'JS', 'React', 'Redux']
back_end = ['Node', 'Express', 'MongoDB']
```
Después de unir las listas en la pregunta 26, copia la lista unida y asígnala a una variable full_stack. Luego, inserta Python y SQL después de Redux.
### Ejercicios: Nivel 2
1. La siguiente es una lista de edades de 10 estudiantes:
```
edades = [19, 22, 19, 24, 20, 25, 26, 24, 25, 24]
```
- Ordena la lista y encuentra la edad mínima y máxima.
- Agrega nuevamente la edad mínima y máxima a la lista.
- Encuentra la edad mediana (un solo elemento medio o dos elementos medios divididos por dos).
- Encuentra la edad promedio (suma de todos los elementos divididos por su número).
- Encuentra el rango de las edades (máximo menos mínimo).
- Compara el valor de (mínimo - promedio) y (máximo - promedio), usa el método abs().
2. Encuentra el país o países del medio en la lista de países.
- Divide la lista de países en dos listas iguales si es par; si no, agrega un país más para la primera mitad.
```
['China', 'Rusia', 'EE. UU.', 'Finlandia', 'Suecia', 'Noruega', 'Dinamarca']
```
- Desempaqueta los primeros tres países y el resto como países escandinavos.

View File

@ -0,0 +1,40 @@
# Tuplas
Documento original en inglés: [tuples](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/06_Day_Tuples/06_tuples.md)
## Ejercicios
### Ejercicios: Nivel 1
1. Crea una tupla vacía.
2. Crea una tupla que contenga los nombres de tus hermanas y hermanos (hermanos imaginarios están bien).
3. Une las tuplas de hermanos y hermanas y asígnalo a `siblings`.
4. ¿Cuántos hermanos tienes?
5. Modifica la tupla `siblings` y agrega el nombre de tu padre y madre, asígnalo a `family_members`.
**Ejercicios: Nivel 2**
6. Desempaqueta hermanos y padres de `family_members`.
7. Crea tuplas de frutas, verduras y productos de origen animal. Une las tres tuplas y asígnalo a una variable llamada `food_stuff_tp`.
8. Cambia la tupla `food_stuff_tp` a una lista llamada `food_stuff_lt`.
9. Corta el elemento o elementos del medio de la tupla `food_stuff_tp` o la lista `food_stuff_lt`.
10. Corta los tres primeros elementos y los tres últimos elementos de la lista `food_stuff_lt`.
11. Elimina completamente la tupla `food_staff_tp`.
12. Verifica si un elemento existe en la tupla:
- Verifica si 'Estonia' es un país nórdico.
- Verifica si 'Iceland' es un país nórdico.
```
nordic_countries = ('Dinamarca', 'Finlandia', 'Islandia', 'Noruega', 'Suecia')
```

View File

@ -0,0 +1,48 @@
# Conjuntos
Documento original en inglés: [Sets](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/07_Day_Sets/07_sets.md)
## Ejercicios
```
# Conjuntos
it_companies = {'Facebook', 'Google', 'Microsoft', 'Apple', 'IBM', 'Oracle', 'Amazon'}
A = {19, 22, 24, 20, 25, 26}
B = {19, 22, 20, 25, 26, 24, 28, 27}
age = [22, 19, 24, 25, 26, 24, 25, 24]
```
### Ejercicios: Nivel 1
1. Encuentra la longitud del conjunto `it_companies`.
2. Agrega 'Twitter' a `it_companies`.
3. Inserta varias compañías de TI a la vez en el conjunto `it_companies`.
4. Elimina una de las compañías del conjunto `it_companies`.
5. ¿Cuál es la diferencia entre `remove` y `discard`?
### Ejercicios: Nivel 2
1. Une los conjuntos A y B.
2. Encuentra la intersección entre A y B.
3. ¿Es A un subconjunto de B?
4. ¿Son A y B conjuntos disjuntos?
5. Une A con B y B con A.
6. ¿Cuál es la diferencia simétrica entre A y B?
7. Elimina completamente los conjuntos.
### Ejercicios: Nivel 3
1. Convierte las edades a un conjunto y compara la longitud de la lista y el conjunto, ¿cuál es más grande?
2. Explica la diferencia entre los siguientes tipos de datos: cadena (string), lista (list), tupla (tuple) y conjunto (set).
3. Soy un profesor y me encanta inspirar y enseñar a la gente. ¿Cuántas palabras únicas se han utilizado en la oración? Utiliza los métodos `split` y `set` para obtener las palabras únicas.

View File

@ -0,0 +1,27 @@
# Diccionarios
Documento original en inglés: [Dictionaries](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/08_Day_Dictionaries/08_dictionaries.md)
## Ejercicios
1. Crea un diccionario vacío llamado `perro`.
2. Agrega las claves `nombre`, `color`, `raza`, `patas` y `edad` al diccionario `perro`.
3. Crea un diccionario llamado `estudiante` y agrega las siguientes claves: `nombre`, `apellido`, `género`, `edad`, `estado civil`, `habilidades`, `país`, `ciudad` y `dirección`.
4. Obtiene la longitud del diccionario `estudiante`.
5. Obtiene el valor de `habilidades` y verifica su tipo de dato, que debería ser una lista.
6. Modifica los valores de `habilidades` agregando una o dos habilidades más.
7. Obtiene las claves del diccionario como una lista.
8. Obtiene los valores del diccionario como una lista.
9. Convierte el diccionario en una lista de tuplas utilizando el método `items()`.
10. Elimina uno de los elementos del diccionario.
11. Elimina uno de los diccionarios por completo.

View File

@ -0,0 +1,83 @@
# Condicionales
Documento original en inglés: [Conditionals](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/09_Day_Conditionals/09_conditionals.md)
## Ejercicios
# Ejercicios: Nivel 1
1. Obtiene la entrada del usuario utilizando `input("Ingresa tu edad: ")`. Si el usuario tiene 18 años o más, muestra el mensaje: "Eres lo suficientemente mayor para conducir". Si es menor de 18 años, muestra el mensaje que indique cuántos años faltan para poder aprender a conducir. **Output:**
```
Ingresa tu edad: 30
Eres lo suficientemente mayor para aprender a conducir.
```
**Output:**
```
Ingresa tu edad: 15
Necesitas 3 años más para aprender a conducir.
```
2. Compara los valores de `mi_edad` y `tu_edad` usando `if... else`. ¿Quién es mayor (yo o tú)? Utiliza `input("Ingresa tu edad: ")` para obtener la edad como entrada. Puedes utilizar una condición anidada para imprimir "año" para una diferencia de edad de 1 año, "años" para diferencias mayores y un texto personalizado si `mi_edad` es igual a `tu_edad`. **Output:**
```
Ingresa tu edad: 30
Tu eres 5 años mayor que yo.
```
3. Obtiene dos números del usuario utilizando el prompt `input`. Si `a` es mayor que `b`, devuelve "a es mayor que b". Si `a` es menor que `b`, devuelve "a es menor que b". En caso contrario, devuelve "a es igual a b". **Output:**
```
Ingresa el número uno: 4
Ingresa el número dos: 3
4 es mayor que 3
```
## Ejercicios: Nivel 2
1. Escribe un código que asigne una calificación a los estudiantes según sus puntuaciones:
```
80-100: A
70-89: B
60-69: C
50-59: D
0-49: F
```
2. Comprueba si la estación es Otoño, Invierno, Primavera o Verano. Si la entrada del usuario es: Septiembre, Octubre o Noviembre, la estación es Otoño. Si la entrada es: Diciembre, Enero o Febrero, la estación es Invierno. Si la entrada es: Marzo, Abril o Mayo, la estación es Primavera. Si la entrada es: Junio, Julio o Agosto, la estación es Verano.
3. La siguiente lista contiene algunas frutas:
```
frutas = ['banana', 'naranja', 'mango', 'limón']
```
Si una fruta no existe en la lista, agrégala a la lista y muestra la lista modificada. Si la fruta ya existe, muestra el mensaje "Esa fruta ya existe en la lista".
## Ejercicios: Nivel 3
Aquí tenemos un diccionario llamado `persona`. ¡Siéntete libre de modificarlo!
```python
persona = {
'nombre': 'Asabeneh',
'apellido': 'Yetayeh',
'edad': 250,
'país': 'Finlandia',
'casado': True,
'habilidades': ['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'dirección': {
'calle': 'Calle Espacial',
'código postal': '02210'
}
}
```
- Comprueba si el diccionario persona tiene una clave llamada habilidades y, si es así, imprime la habilidad intermedia de la lista de habilidades.
- Comprueba si el diccionario persona tiene una clave llamada habilidades y, si es así, verifica si la persona tiene la habilidad 'Python' e imprime el resultado.
- Si las habilidades de una persona son solo JavaScript y React, imprime "Es un desarrollador front-end". Si las habilidades incluyen Node, Python y MongoDB, imprime "Es un desarrollador back-end". Si las habilidades incluyen React, Node y MongoDB, imprime "Es un desarrollador fullstack". En caso contrario, imprime "título desconocido".
- Si la persona está casada y vive en Finlandia, imprime la información en el siguiente formato:
-
```
Asabeneh Yetayeh vive en Finlandia. Está casado.
```

View File

@ -0,0 +1,81 @@
# Bucles
Documento original en inglés: [Loops](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/10_Day_Loops/10_loops.md)
## Ejercicios
# Ejercicios: Nivel 1
1. Itera de 0 a 10 utilizando un bucle for, haz lo mismo utilizando un bucle while.
2. Itera de 10 a 0 utilizando un bucle for, haz lo mismo utilizando un bucle while.
3. Escribe un bucle que haga siete llamadas a `print()`, de modo que obtengamos el siguiente triángulo en la salida:
```
#
##
###
####
#####
######
#######
```
4. Utiliza bucles anidados para crear lo siguiente:
```
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
```
5. Imprime el siguiente patrón:
```
0 x 0 = 0
1 x 1 = 1
2 x 2 = 4
3 x 3 = 9
4 x 4 = 16
5 x 5 = 25
6 x 6 = 36
7 x 7 = 49
8 x 8 = 64
9 x 9 = 81
10 x 10 = 100
```
6. Itera a través de la lista `['Python', 'Numpy', 'Pandas', 'Django', 'Flask']` utilizando un bucle for e imprime los elementos.
7. Utiliza un bucle for para iterar de 0 a 100 e imprime solo los números pares.
8. Utiliza un bucle for para iterar de 0 a 100 e imprime solo los números impares.
## Ejercicios: Nivel 2
1. Utiliza un bucle for para iterar de 0 a 100 e imprime la suma de todos los números.
```
La suma de todos los números es 5050.
```
2. Utiliza un bucle for para iterar de 0 a 100 e imprime la suma de todos los números pares y la suma de todos los números impares.
```
La suma de todos los números pares es 2550. Y la suma de todos los números impares es 2500.
```
## Ejercicios: Nivel 3
1. Ve a la carpeta de datos y utiliza el archivo countries.py. Recorre los países y extrae todos los países que contienen la palabra "land".
2. Esta es una lista de frutas: `['banana', 'naranja', 'mango', 'limón']`. Invierte el orden utilizando un bucle.
3. Ve a la carpeta de datos y utiliza el archivo countries_data.py.
- ¿Cuál es el número total de idiomas en los datos?
- Encuentra los diez idiomas más hablados en los datos.
- Encuentra los 10 países más poblados del mundo.

View File

@ -0,0 +1,92 @@
# Funciones
Documento original en inglés: [Functions](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/11_Day_Functions/11_functions.md)
## Ejercicios
# Ejercicios: Nivel 1
1. Declara una función llamada `add_two_numbers`. Toma dos parámetros y devuelve la suma.
2. El área de un círculo se calcula de la siguiente manera: `área = π x r x r`. Escribe una función que calcule `area_of_circle`.
3. Escribe una función llamada `add_all_nums` que tome un número arbitrario de argumentos y sume todos los argumentos. Verifica si todos los elementos de la lista son de tipo numérico. Si no lo son, proporciona un mensaje de retroalimentación razonable.
4. La temperatura en °C se puede convertir a °F utilizando la siguiente fórmula: °F = (°C x 9/5) + 32. Escribe una función que convierta de °C a °F, `convert_celsius_to_fahrenheit`.
5. Escribe una función llamada `check_season`. Toma un parámetro de mes y devuelve la estación: Otoño, Invierno, Primavera o Verano.
6. Escribe una función llamada `calculate_slope` que devuelva la pendiente de una ecuación lineal.
7. La ecuación cuadrática se calcula de la siguiente manera: `ax² + bx + c = 0`. Escribe una función que calcule el conjunto de soluciones de una ecuación cuadrática, `solve_quadratic_eqn`.
8. Declara una función llamada `print_list`. Toma una lista como parámetro y imprime cada elemento de la lista.
9. Declara una función llamada `reverse_list`. Toma un arreglo como parámetro y devuelve el arreglo invertido (usa bucles).
```
print(reverse_list([1, 2, 3, 4, 5]))
# [5, 4, 3, 2, 1]
print(reverse_list1(["A", "B", "C"]))
# ["C", "B", "A"]
```
10. Declara una función llamada `capitalize_list_items`. Toma una lista como parámetro y devuelve una lista de elementos en mayúsculas.
11. Declara una función llamada `add_item`. Toma una lista y un parámetro de elemento. Devuelve una lista con el elemento agregado al final.
```
food_staff = ['Potato', 'Tomato', 'Mango', 'Milk'];
print(add_item(food_staff, 'Meat')) # ['Potato', 'Tomato', 'Mango', 'Milk','Meat'];
numbers = [2, 3, 7, 9];
print(add_item(numbers, 5)) [2, 3, 7, 9, 5]
```
12. Declara una función llamada `remove_item`. Toma una lista y un parámetro de elemento. Devuelve una lista con el elemento eliminado de ella.
```
food_staff = ['Potato', 'Tomato', 'Mango', 'Milk'];
print(remove_item(food_staff, 'Mango')) # ['Potato', 'Tomato', 'Milk'];
numbers = [2, 3, 7, 9];
print(remove_item(numbers, 3)) # [2, 7, 9]
```
13. Declara una función llamada `sum_of_numbers`. Toma un número como parámetro y suma todos los números en ese rango.
```
print(sum_of_numbers(5)) # 15
print(sum_all_numbers(10)) # 55
print(sum_all_numbers(100)) # 5050
```
14. Declara una función llamada `sum_of_odds`. Toma un número como parámetro y suma todos los números impares en ese rango.
15. Declara una función llamada `sum_of_even`. Toma un número como parámetro y suma todos los números pares en ese rango.
## Ejercicios: Nivel 2
1. Declara una función llamada `evens_and_odds`. Toma un número entero positivo como parámetro y cuenta el número de pares e impares en ese número.
```
print(evens_and_odds(100))
# The number of odds are 50.
# The number of evens are 51.
```
2. Llama a tu función `factorial`, toma un número entero como parámetro y devuelve el factorial de ese número.
3. Llama a tu función `is_empty`, toma un parámetro y verifica si está vacío o no.
4. Escribe diferentes funciones que tomen listas. Deben calcular la media, mediana, moda, rango, varianza y desviación estándar. Las funciones se llaman `calculate_mean`, `calculate_median`, `calculate_mode`, `calculate_range`, `calculate_variance` y `calculate_std` (desviación estándar).
## Ejercicios: Nivel 3
1. Escribe una función llamada `is_prime` que compruebe si un número es primo.
2. Escribe una función que compruebe si todos los elementos de una lista son únicos.
3. Escribe una función que compruebe si todos los elementos de una lista son del mismo tipo de dato.
4. Escribe una función que compruebe si una variable proporcionada es una variable válida en Python.
5. Ve a la carpeta de datos y accede al archivo countries-data.py.
- Crea una función llamada `most_spoken_languages_in_the_world`. Debe devolver las 10 o 20 lenguas más habladas en el mundo en orden descendente.
- Crea una función llamada `most_populated_countries`. Debe devolver los 10 o 20 países más poblados en orden descendente.

View File

@ -0,0 +1,64 @@
# Módulos
Documento original en inglés: [Modules](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/12_Day_Modules/12_modules.md)
## Ejercicios
### Ejercicios: Nivel 1
1. Escribe una función que genere un identificador de usuario aleatorio de seis dígitos/caracteres.
```python
print(random_user_id())
# '1ee33d'
```
2. Modifica la tarea anterior. Declara una función llamada user_id_gen_by_user. No toma parámetros, pero toma dos entradas utilizando input(). Una de las entradas es el número de caracteres y la segunda entrada es el número de IDs que se supone que deben generarse.
```
print(user_id_gen_by_user()) # Entrada de usuario: 5 5
# Salida:
# kcsy2
# SMFYb
# bWmeq
# ZXOYh
# 2Rgxf
print(user_id_gen_by_user()) # Entrada de usuario: 16 5
# Salida:
# 1GCSgPLMaBAVQZ26
# YD7eFwNQKNs7qXaT
# ycArC5yrRupyG00S
# UbGxOFI7UXSWAyKN
# dIV0SSUTgAdKwStr
```
3. Escribe una función llamada rgb_color_gen que generará colores RGB (3 valores que van desde 0 hasta 255 cada uno).
```
print(rgb_color_gen())
# 'rgb(125,244,255)' - la salida debe estar en esta forma
```
### Ejercicios: Nivel 2
1. Escribe una función llamada list_of_hexa_colors que devuelva cualquier cantidad de colores hexadecimales en una lista (seis números hexadecimales escritos después del #). El sistema numérico hexadecimal está compuesto por 16 símbolos, del 0 al 9 y las primeras 6 letras del alfabeto, de la a a la f. Mira el ejercicio 6 para ejemplos de salida.
2. Escribe una función llamada list_of_rgb_colors que devuelva cualquier cantidad de colores RGB en una lista.
3. Escribe una función llamada generate_colors que pueda generar cualquier cantidad de colores hexadecimales o RGB.
```
generate_colors('hexa', 3)
# ['#a3e12f','#03ed55','#eb3d2b']
generate_colors('hexa', 1)
# ['#b334ef']
generate_colors('rgb', 3)
# ['rgb(5, 55, 175','rgb(50, 105, 100','rgb(15, 26, 80']
generate_colors('rgb', 1)
# ['rgb(33,79, 176)']
```
Ejercicios: Nivel 3
1. Llama a tu función shuffle_list, toma una lista como parámetro y devuelve una lista mezclada.
2. Escribe una función que devuelva una matriz de siete números aleatorios en un rango de 0-9. Todos los números deben ser únicos.

View File

@ -0,0 +1,64 @@
# Comprensión de listas
Documento original en inglés: [List comprehension](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/13_Day_List_comprehension/13_list_comprehension.md)
## Ejercicios
### Ejercicios: Nivel 1
1. Filtra solo los números negativos y cero en la lista usando una comprensión de lista.
```python
numbers = [-4, -3, -2, -1, 0, 2, 4, 6]
```
2. Aplana la siguiente lista de listas de listas a una lista unidimensional:
```
list_of_lists =[[[1, 2, 3]], [[4, 5, 6]], [[7, 8, 9]]]
# Resultado: [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
3. Usando una comprensión de lista, crea la siguiente lista de tuplas:
```
[(0, 1, 0, 0, 0, 0, 0),
(1, 1, 1, 1, 1, 1, 1),
(2, 1, 2, 4, 8, 16, 32),
(3, 1, 3, 9, 27, 81, 243),
(4, 1, 4, 16, 64, 256, 1024),
(5, 1, 5, 25, 125, 625, 3125),
(6, 1, 6, 36, 216, 1296, 7776),
(7, 1, 7, 49, 343, 2401, 16807),
(8, 1, 8, 64, 512, 4096, 32768),
(9, 1, 9, 81, 729, 6561, 59049),
(10, 1, 10, 100, 1000, 10000, 100000)]
```
4. Aplana la siguiente lista a una nueva lista:
```
countries = [[('Finland', 'Helsinki')], [('Sweden', 'Stockholm')], [('Norway', 'Oslo')]]
# Resultado:
[['FINLAND', 'FIN', 'HELSINKI'],
['SWEDEN', 'SWE', 'STOCKHOLM'],
['NORWAY', 'NOR', 'OSLO']]
```
5. Cambia la siguiente lista a una lista de diccionarios:
```
countries = [[('Finland', 'Helsinki')], [('Sweden', 'Stockholm')], [('Norway', 'Oslo')]]
# Resultado:
[{'country': 'Finland', 'city': 'Helsinki'},
{'country': 'Sweden', 'city': 'Stockholm'},
{'country': 'Norway', 'city': 'Oslo'}]
```
6. Cambia la siguiente lista de listas a una lista de cadenas concatenadas:
```
names = [[('Asabeneh', 'Yetayeh')], [('David', 'Smith')], [('Donald', 'Trump')], [('Bill', 'Gates')]]
# Resultado: ['Asabeneh Yetayeh', 'David Smith', 'Donald Trump', 'Bill Gates']
```
7. Escribe una función lambda que pueda resolver una pendiente o una ordenada al origen de funciones lineales.

View File

@ -0,0 +1,45 @@
# Funciones de Orden Superior
Documento original en inglés: [Higher Order Functions](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/14_Day_Higher_order_functions/14_higher_order_functions.md)
## Ejercicios
```
countries = ['Estonia', 'Finlandia', 'Suecia', 'Dinamarca', 'Noruega', 'Islandia']
names = ['Asabeneh', 'Lidiya', 'Ermias', 'Abraham']
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
### Ejercicios: Nivel 1
1. Explica la diferencia entre map, filter y reduce.
2. Explica la diferencia entre función de orden superior, cierre y decorador.
3. Define una función de llamada antes de map, filter o reduce, mira los ejemplos.
4. Usa un bucle for para imprimir cada país en la lista de países.
5. Usa un bucle for para imprimir cada nombre en la lista de nombres.
6. Usa un bucle for para imprimir cada número en la lista de números.
### Ejercicios: Nivel 2
1. Usa map para crear una nueva lista cambiando cada país a mayúsculas en la lista de países.
2. Usa map para crear una nueva lista cambiando cada número por su cuadrado en la lista de números.
3. Usa map para cambiar cada nombre a mayúsculas en la lista de nombres.
4. Usa filter para filtrar los países que contengan 'land'.
5. Usa filter para filtrar los países que tengan exactamente seis caracteres.
6. Usa filter para filtrar los países que contengan seis letras o más en la lista de países.
7. Usa filter para filtrar los países que comiencen con 'E'.
8. Encadena dos o más iteradores de lista (por ejemplo, arr.map(callback).filter(callback).reduce(callback)).
9. Declara una función llamada get_string_lists que tome una lista como parámetro y luego devuelva una lista que contenga solo elementos de tipo cadena.
10. Usa reduce para sumar todos los números en la lista de números.
11. Usa reduce para concatenar todos los países y producir la siguiente oración: Estonia, Finlandia, Suecia, Dinamarca, Noruega e Islandia son países del norte de Europa.
12. Declara una función llamada categorize_countries que devuelva una lista de países con algún patrón común (puedes encontrar la [lista de países](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/data/countries.py) en este repositorio como countries.js(eg 'land', 'ia', 'island', 'stan')).
13. Crea una función que devuelva un diccionario, donde las claves sean las letras iniciales de los países y los valores sean la cantidad de nombres de países que comienzan con esa letra.
14. Declara una función llamada get_first_ten_countries que devuelva una lista de los primeros diez países de la lista de países.
15. Declara una función llamada get_last_ten_countries que devuelva los últimos diez países en la lista de países.
### Ejercicios: Nivel 3
1. Usa el archivo [countries_data.py](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/data/countries-data.py) y sigue las siguientes tareas:
- Ordena los países por nombre, capital y población.
- Filtra los diez idiomas más hablados por ubicación.
- Filtra los diez países más poblados.

View File

@ -0,0 +1,7 @@
# Errores de tipo en Python
Documento original en inglés: [Python Type Errors](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/15_Day_Python_type_errors/15_python_type_errors.md)
## Ejercicios
1. Abre tu shell interactivo de Python y prueba todos los ejemplos cubiertos en esta sección.

View File

@ -0,0 +1,15 @@
# Fecha y Hora en Python
Documento original en inglés: [Python Date time](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/16_Day_Python_date_time/16_python_datetime.md)
## Ejercicios
1. Obtén el día actual, mes, año, hora, minuto y marca de tiempo actual desde el módulo datetime.
2. Formatea la fecha actual utilizando este formato: "%m/%d/%Y, %H:%M:%S".
3. Hoy es 5 de diciembre de 2019. Cambia esta cadena de tiempo a un objeto de tiempo.
4. Calcula la diferencia de tiempo entre ahora y el Año Nuevo.
5. Calcula la diferencia de tiempo entre el 1 de enero de 1970 y ahora.
6. Piensa para qué puedes usar el módulo datetime. Ejemplos:
- Análisis de series temporales.
- Obtener una marca de tiempo de cualquier actividad en una aplicación.
- Publicar entradas en un blog.

View File

@ -0,0 +1,12 @@
# Manejo de excepciones
Documento original en inglés: [Exception handling](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/17_Day_Exception_handling/17_exception_handling.md)
## Ejercicios
```
names = ['Finland', 'Sweden', 'Norway', 'Denmark', 'Iceland', 'Estonia', 'Russia'].
```
1. Desempaca los cinco primeros países y almacénalos en una variable llamada 'nordic_countries', almacena 'Estonia' y 'Russia' en variables 'es' y 'ru' respectivamente.

View File

@ -0,0 +1,71 @@
# Expresiones regulares
Documento original en inglés: [Regular Expressions](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/18_Day_Regular_expressions/18_regular_expressions.md)
## Ejercicios
### Ejercicios: Nivel 1
1. ¿Cuál es la palabra más frecuente en el siguiente párrafo?
```
paragraph = 'I love teaching. If you do not love teaching what else can you love. I love Python if you do not love something which can give you all the capabilities to develop an application what else can you love.
```
```
[
(6, 'love'),
(5, 'you'),
(3, 'can'),
(2, 'what'),
(2, 'teaching'),
(2, 'not'),
(2, 'else'),
(2, 'do'),
(2, 'I'),
(1, 'which'),
(1, 'to'),
(1, 'the'),
(1, 'something'),
(1, 'if'),
(1, 'give'),
(1, 'develop'),
(1, 'capabilities'),
(1, 'application'),
(1, 'an'),
(1, 'all'),
(1, 'Python'),
(1, 'If')
]
```
2. La posición de algunas partículas en el eje x horizontal son -12, -4, -3 y -1 en la dirección negativa, 0 en el origen, 4 y 8 en la dirección positiva. Extrae estos números de todo el texto y encuentra la distancia entre las dos partículas más lejanas.
```
puntos = ['-12', '-4', '-3', '-1', '0', '4', '8']
puntos_ordenados = [-12, -4, -3, -1, -1, 0, 2, 4, 8]
distancia = 8 - (-12) # La distancia es 20
```
### Ejercicios: Nivel 2
1. Escribe un patrón que identifique si una cadena es una variable válida en Python.
```
es_variable_valida('primer_nombre') # Verdadero
es_variable_valida('primer-nombre') # Falso
es_variable_valida('1primer_nombre') # Falso
es_variable_valida('nombre') # Verdadero
```
### Ejercicios: Nivel 3
1. Limpia el siguiente texto. Después de limpiarlo, cuenta las tres palabras más frecuentes en la cadena.
```
sentence = '''%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!?'''
print(clean_text(sentence));
I am a teacher and I love teaching There is nothing as more rewarding as educating and empowering people I found teaching more interesting than any other jobs Does this motivate you to be a teacher
print(most_frequent_words(cleaned_text)) # [(3, 'I'), (2, 'teaching'), (2, 'teacher')]
```

View File

@ -0,0 +1,7 @@
# Manipulación de archivos
Documento original en inglés: [file handling](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/19_Day_File_handling/19_file_handling.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Gestor de paquetes de Python
Documento original en inglés: [python package manager](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/20_Day_Python_package_manager/20_python_package_manager.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Clases y objetos
Documento original en inglés: [Classes and Objects](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/21_Day_Classes_and_objects/21_classes_and_objects.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Web scraping
Documento original en inglés: [Web Scraping](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/22_Day_Web_scraping/22_web_scraping.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Entorno virtual
Documento original en inglés: [Virtual Environment](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/23_Day_Virtual_environment/23_virtual_environment.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Estadísticas
Documento original en inglés: [statistics](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/24_Day_Statistics/24_statistics.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Pandas
Documento original en inglés: [Pandas](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/25_Day_Pandas/25_pandas.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Desarrollo web en Python
Documento original en inglés: [Python web](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/26_Day_Python_web/26_python_web.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Python con MongoDB
Documento original en inglés: [Python with MondoDB](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/27_Day_Python_with_mongodb/27_python_with_mongodb.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# API
Documento original en inglés: [API](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/28_Day_API/28_API.md)
## Ejercicios
...

View File

@ -0,0 +1,7 @@
# Construcción de API
Documento original en inglés: [Building an API](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/29_Day_Building_API/29_building_API.md)
## Ejercicios
...

View File

@ -0,0 +1,40 @@
# Ejercicios del Repo 30-Days-of-Python
Estos apuntes y ejercicios en python han sido realizados siguiendo un repositorio de [Asabeneh](https://github.com/Asabeneh):
- [30 Days of Python](https://github.com/Asabeneh/30-Days-Of-Python)
El reposotorio original está en inglés, pero he traducido los ejercicios al español, así como los apuntes que he creído convenientes resaltar.
## Índice del curso y apuntes realizados
| # Día | Temas |
| ----- | :----------------------------------------------------------------------------------: |
| 01 | [Introducción](./01_Introducción/README.md) |
| 02 | [Variables, Funciones Incorporadas](./02_Variables_funciones_incorporadas/README.md) |
| 03 | [Operadores](./03_Operadores/README.md) |
| 04 | [Cadenas](./04_Cadenas/README.md) |
| 05 | [Listas](./05_Listas/README.md) |
| 06 | [Tuplas](./06_Tuplas/README.md) |
| 07 | [Conjuntos](./07_Conjuntos/README.md) |
| 08 | [Diccionarios](./08_Diccionarios/README.md) |
| 09 | [Condicionales](./09_Condicionales/README.md) |
| 10 | [Bucles](./10_Bucles/README.md) |
| 11 | [Funciones](./11_Funciones/README.md) |
| 12 | [Módulos](./12_Módulos/README.md) |
| 13 | [Comprensión de Listas](./13_Comprensión_de_listas/README.md) |
| 14 | [Funciones de Orden Superior](./14_Funciones_de_orden_superior/README.md) |
| 15 | [Errores de Tipo en Python](./15_Errores_de_tipo_en_python/README.md) |
| 16 | [Fecha y Hora en Python](./16_Fecha_y_hora_en_python/README.md) |
| 17 | [Manejo de Excepciones](./17_Manejo_de_excepciones/README.md) |
| 18 | [Expresiones Regulares](./18_Expresiones_regulares/README.md) |
| 19 | [Manipulación de Archivos](./19_Manipulación_de_archivos/README.md) |
| 20 | [Gestor de Paquetes de Python](./20_Gestor_de_paquetes_de_Python/README.md) |
| 21 | [Clases y Objetos](./21_Clases_y_objetos/README.md) |
| 22 | [Web Scraping](./22_Web_scraping/README.md) |
| 23 | [Entorno Virtual](./23_Entorno_virtual/README.md) |
| 24 | [Estadísticas](./24_Estadísticas/README.md) |
| 25 | [Pandas](./25_Pandas/README.md) |
| 26 | [Desarrollo Web en Python](./26_Desarrollo_web_en_Python/README.md) |
| 27 | [Python con MongoDB](./27_Python_con_MongoDB/README.md) |
| 28 | [API](./28_API/README.md) |
| 29 | [Construcción de API](./29_Construcción_de_API/README.md) |