From 3d867aed80440f9b222b2ff8a47ea6903113e8bf Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Mon, 18 Sep 2023 01:00:26 +0200 Subject: [PATCH] Add exercise of new course 30-days-of-python Signed-off-by: Manuel Vergara --- 30-days-of-python/01_Introducción/README.md | 40 ++++++++ .../README.md | 42 +++++++++ 30-days-of-python/03_Operadores/README.md | 71 ++++++++++++++ 30-days-of-python/04_Cadenas/README.md | 69 ++++++++++++++ 30-days-of-python/05_Listas/README.md | 87 ++++++++++++++++++ 30-days-of-python/06_Tuplas/README.md | 40 ++++++++ 30-days-of-python/07_Conjuntos/README.md | 48 ++++++++++ 30-days-of-python/08_Diccionarios/README.md | 27 ++++++ 30-days-of-python/09_Condicionales/README.md | 83 +++++++++++++++++ 30-days-of-python/10_Bucles/README.md | 81 ++++++++++++++++ 30-days-of-python/11_Funciones/README.md | 92 +++++++++++++++++++ 30-days-of-python/12_Módulos/README.md | 64 +++++++++++++ .../13_Comprensión_de_listas/README.md | 64 +++++++++++++ .../14_Funciones_de_orden_superior/README.md | 45 +++++++++ .../15_Errores_de_tipo_en_Python/README.md | 7 ++ .../16_Fecha_y_hora_en_Python/README.md | 15 +++ .../17_Manejo_de_excepciones/README.md | 12 +++ .../18_Expresiones_regulares/README.md | 71 ++++++++++++++ .../19_Manipulación_de_archivos/README.md | 7 ++ .../20_Gestor_de_paquetes_de_Python/README.md | 7 ++ .../21_Clases_y_objetos/README.md | 7 ++ 30-days-of-python/22_Web_scraping/README.md | 7 ++ .../23_Entorno_virtual/README.md | 7 ++ 30-days-of-python/24_Estadísticas/README.md | 7 ++ 30-days-of-python/25_Pandas/README.md | 7 ++ .../26_Desarrollo_web_en_Python/README.md | 7 ++ .../27_Python_con_MongoDB/README.md | 7 ++ 30-days-of-python/28_API/README.md | 7 ++ .../29_Construcción_de_API/README.md | 7 ++ 30-days-of-python/README.md | 40 ++++++++ 30 files changed, 1075 insertions(+) create mode 100644 30-days-of-python/01_Introducción/README.md create mode 100644 30-days-of-python/02_Variables_funciones_incorporadas/README.md create mode 100644 30-days-of-python/03_Operadores/README.md create mode 100644 30-days-of-python/04_Cadenas/README.md create mode 100644 30-days-of-python/05_Listas/README.md create mode 100644 30-days-of-python/06_Tuplas/README.md create mode 100644 30-days-of-python/07_Conjuntos/README.md create mode 100644 30-days-of-python/08_Diccionarios/README.md create mode 100644 30-days-of-python/09_Condicionales/README.md create mode 100644 30-days-of-python/10_Bucles/README.md create mode 100644 30-days-of-python/11_Funciones/README.md create mode 100644 30-days-of-python/12_Módulos/README.md create mode 100644 30-days-of-python/13_Comprensión_de_listas/README.md create mode 100644 30-days-of-python/14_Funciones_de_orden_superior/README.md create mode 100644 30-days-of-python/15_Errores_de_tipo_en_Python/README.md create mode 100644 30-days-of-python/16_Fecha_y_hora_en_Python/README.md create mode 100644 30-days-of-python/17_Manejo_de_excepciones/README.md create mode 100644 30-days-of-python/18_Expresiones_regulares/README.md create mode 100644 30-days-of-python/19_Manipulación_de_archivos/README.md create mode 100644 30-days-of-python/20_Gestor_de_paquetes_de_Python/README.md create mode 100644 30-days-of-python/21_Clases_y_objetos/README.md create mode 100644 30-days-of-python/22_Web_scraping/README.md create mode 100644 30-days-of-python/23_Entorno_virtual/README.md create mode 100644 30-days-of-python/24_Estadísticas/README.md create mode 100644 30-days-of-python/25_Pandas/README.md create mode 100644 30-days-of-python/26_Desarrollo_web_en_Python/README.md create mode 100644 30-days-of-python/27_Python_con_MongoDB/README.md create mode 100644 30-days-of-python/28_API/README.md create mode 100644 30-days-of-python/29_Construcción_de_API/README.md create mode 100644 30-days-of-python/README.md diff --git a/30-days-of-python/01_Introducción/README.md b/30-days-of-python/01_Introducción/README.md new file mode 100644 index 0000000..09f39ac --- /dev/null +++ b/30-days-of-python/01_Introducción/README.md @@ -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). diff --git a/30-days-of-python/02_Variables_funciones_incorporadas/README.md b/30-days-of-python/02_Variables_funciones_incorporadas/README.md new file mode 100644 index 0000000..a18dbda --- /dev/null +++ b/30-days-of-python/02_Variables_funciones_incorporadas/README.md @@ -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. + diff --git a/30-days-of-python/03_Operadores/README.md b/30-days-of-python/03_Operadores/README.md new file mode 100644 index 0000000..50782ae --- /dev/null +++ b/30-days-of-python/03_Operadores/README.md @@ -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 +``` diff --git a/30-days-of-python/04_Cadenas/README.md b/30-days-of-python/04_Cadenas/README.md new file mode 100644 index 0000000..2fe0e83 --- /dev/null +++ b/30-days-of-python/04_Cadenas/README.md @@ -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. '   Coding For All      ', 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 +``` diff --git a/30-days-of-python/05_Listas/README.md b/30-days-of-python/05_Listas/README.md new file mode 100644 index 0000000..a4f07b9 --- /dev/null +++ b/30-days-of-python/05_Listas/README.md @@ -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. diff --git a/30-days-of-python/06_Tuplas/README.md b/30-days-of-python/06_Tuplas/README.md new file mode 100644 index 0000000..1e39961 --- /dev/null +++ b/30-days-of-python/06_Tuplas/README.md @@ -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') +``` diff --git a/30-days-of-python/07_Conjuntos/README.md b/30-days-of-python/07_Conjuntos/README.md new file mode 100644 index 0000000..5f8c2f2 --- /dev/null +++ b/30-days-of-python/07_Conjuntos/README.md @@ -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. diff --git a/30-days-of-python/08_Diccionarios/README.md b/30-days-of-python/08_Diccionarios/README.md new file mode 100644 index 0000000..9f908e7 --- /dev/null +++ b/30-days-of-python/08_Diccionarios/README.md @@ -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. diff --git a/30-days-of-python/09_Condicionales/README.md b/30-days-of-python/09_Condicionales/README.md new file mode 100644 index 0000000..1381ce6 --- /dev/null +++ b/30-days-of-python/09_Condicionales/README.md @@ -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. +``` diff --git a/30-days-of-python/10_Bucles/README.md b/30-days-of-python/10_Bucles/README.md new file mode 100644 index 0000000..6a5bc2a --- /dev/null +++ b/30-days-of-python/10_Bucles/README.md @@ -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. diff --git a/30-days-of-python/11_Funciones/README.md b/30-days-of-python/11_Funciones/README.md new file mode 100644 index 0000000..08ef4bb --- /dev/null +++ b/30-days-of-python/11_Funciones/README.md @@ -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. diff --git a/30-days-of-python/12_Módulos/README.md b/30-days-of-python/12_Módulos/README.md new file mode 100644 index 0000000..ef8f768 --- /dev/null +++ b/30-days-of-python/12_Módulos/README.md @@ -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. diff --git a/30-days-of-python/13_Comprensión_de_listas/README.md b/30-days-of-python/13_Comprensión_de_listas/README.md new file mode 100644 index 0000000..213f5cf --- /dev/null +++ b/30-days-of-python/13_Comprensión_de_listas/README.md @@ -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. diff --git a/30-days-of-python/14_Funciones_de_orden_superior/README.md b/30-days-of-python/14_Funciones_de_orden_superior/README.md new file mode 100644 index 0000000..9b39e7e --- /dev/null +++ b/30-days-of-python/14_Funciones_de_orden_superior/README.md @@ -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. diff --git a/30-days-of-python/15_Errores_de_tipo_en_Python/README.md b/30-days-of-python/15_Errores_de_tipo_en_Python/README.md new file mode 100644 index 0000000..fbaf268 --- /dev/null +++ b/30-days-of-python/15_Errores_de_tipo_en_Python/README.md @@ -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. diff --git a/30-days-of-python/16_Fecha_y_hora_en_Python/README.md b/30-days-of-python/16_Fecha_y_hora_en_Python/README.md new file mode 100644 index 0000000..b09f525 --- /dev/null +++ b/30-days-of-python/16_Fecha_y_hora_en_Python/README.md @@ -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. diff --git a/30-days-of-python/17_Manejo_de_excepciones/README.md b/30-days-of-python/17_Manejo_de_excepciones/README.md new file mode 100644 index 0000000..fe55e30 --- /dev/null +++ b/30-days-of-python/17_Manejo_de_excepciones/README.md @@ -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. + diff --git a/30-days-of-python/18_Expresiones_regulares/README.md b/30-days-of-python/18_Expresiones_regulares/README.md new file mode 100644 index 0000000..3b2eafe --- /dev/null +++ b/30-days-of-python/18_Expresiones_regulares/README.md @@ -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')] +``` diff --git a/30-days-of-python/19_Manipulación_de_archivos/README.md b/30-days-of-python/19_Manipulación_de_archivos/README.md new file mode 100644 index 0000000..b29199e --- /dev/null +++ b/30-days-of-python/19_Manipulación_de_archivos/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/20_Gestor_de_paquetes_de_Python/README.md b/30-days-of-python/20_Gestor_de_paquetes_de_Python/README.md new file mode 100644 index 0000000..704d9a9 --- /dev/null +++ b/30-days-of-python/20_Gestor_de_paquetes_de_Python/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/21_Clases_y_objetos/README.md b/30-days-of-python/21_Clases_y_objetos/README.md new file mode 100644 index 0000000..8f8adb9 --- /dev/null +++ b/30-days-of-python/21_Clases_y_objetos/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/22_Web_scraping/README.md b/30-days-of-python/22_Web_scraping/README.md new file mode 100644 index 0000000..fc41727 --- /dev/null +++ b/30-days-of-python/22_Web_scraping/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/23_Entorno_virtual/README.md b/30-days-of-python/23_Entorno_virtual/README.md new file mode 100644 index 0000000..c5f3c40 --- /dev/null +++ b/30-days-of-python/23_Entorno_virtual/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/24_Estadísticas/README.md b/30-days-of-python/24_Estadísticas/README.md new file mode 100644 index 0000000..8ee42af --- /dev/null +++ b/30-days-of-python/24_Estadísticas/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/25_Pandas/README.md b/30-days-of-python/25_Pandas/README.md new file mode 100644 index 0000000..a56d8d5 --- /dev/null +++ b/30-days-of-python/25_Pandas/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/26_Desarrollo_web_en_Python/README.md b/30-days-of-python/26_Desarrollo_web_en_Python/README.md new file mode 100644 index 0000000..5c458e0 --- /dev/null +++ b/30-days-of-python/26_Desarrollo_web_en_Python/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/27_Python_con_MongoDB/README.md b/30-days-of-python/27_Python_con_MongoDB/README.md new file mode 100644 index 0000000..dc035e0 --- /dev/null +++ b/30-days-of-python/27_Python_con_MongoDB/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/28_API/README.md b/30-days-of-python/28_API/README.md new file mode 100644 index 0000000..31dcbba --- /dev/null +++ b/30-days-of-python/28_API/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/29_Construcción_de_API/README.md b/30-days-of-python/29_Construcción_de_API/README.md new file mode 100644 index 0000000..d458b7b --- /dev/null +++ b/30-days-of-python/29_Construcción_de_API/README.md @@ -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 + +... \ No newline at end of file diff --git a/30-days-of-python/README.md b/30-days-of-python/README.md new file mode 100644 index 0000000..52f05ec --- /dev/null +++ b/30-days-of-python/README.md @@ -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) |