Skip to content

Commit 1668a78

Browse files
committed
Feat: Se crea documentación de ejercicios practicos desde basico hasta avanzado
1 parent b751da4 commit 1668a78

22 files changed

+450
-153
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ celerybeat.pid
100100
.venv
101101
env/
102102
venv/
103+
envdev/
103104
ENV/
104105
env.bak/
105106
venv.bak/

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.0.h
1717
### Fixed
1818
- N/A
1919

20+
## [1.5.0] - 2025-08-01
21+
22+
### Added
23+
- Documentación completa en español para todas los ejercicios desde basico, intermedio y avanzado.
24+
- Docstrings detallados con objetivos y conceptos clave.
25+
2026
## [1.4.0] - 2025-07-24
2127

2228
### Added
Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1-
numbers = [15, 2, 1, 3, 20]
2-
largest = numbers[0]
1+
"""
2+
Lección básica: Número más grande en una lista.
3+
Objetivo:
4+
Recorrer una lista y encontrar el número más grande sin usar funciones integradas.
5+
"""
36

4-
for number in numbers:
5-
if number > largest:
6-
largest = number
7-
print(largest)
7+
def main():
8+
"""Encuentra e imprime el número más grande en una lista."""
9+
numbers = [15, 2, 1, 3, 20]
10+
largest = numbers[0]
11+
12+
for number in numbers:
13+
if number > largest:
14+
largest = number
15+
16+
print(f"El número más grande es: {largest}")
17+
18+
if __name__ == "__main__":
19+
main()
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
1-
numbers = [1, 2, 3, 3, 4, 5, 5, 6]
2-
numbers_no_duplicates = []
1+
"""
2+
Lección básica: Quitar duplicados.
3+
Objetivo:
4+
Eliminar valores repetidos de una lista sin usar estructuras complejas.
5+
"""
36

4-
for number in numbers:
5-
if number not in numbers_no_duplicates:
6-
numbers_no_duplicates.append(number)
7+
def main():
8+
"""Remueve duplicados de una lista y muestra el resultado."""
9+
numbers = [1, 2, 3, 3, 4, 5, 5, 6]
10+
numbers_no_duplicates = []
711

8-
print("Lista original:", numbers)
9-
print("Lista sin duplicados:", numbers_no_duplicates)
12+
for num in numbers:
13+
if num not in numbers_no_duplicates:
14+
numbers_no_duplicates.append(num)
15+
16+
print(f"Lista original: {numbers}")
17+
print(f"Sin duplicados: {numbers_no_duplicates}")
18+
19+
if __name__ == "__main__":
20+
main()
Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,33 @@
1-
numbers = {
2-
"0": "Cero",
3-
"1": "Uno",
4-
"2": "Dos",
5-
"3": "Tres",
6-
"4": "Cuatro",
7-
"5": "Cinco",
8-
"6": "Seis",
9-
"7": "Siete",
10-
"8": "Ocho",
11-
"9": "Nueve"
12-
}
13-
phone_in_letters = ""
14-
phone = input("Telefono: ")
1+
"""
2+
Lección básica: Número a letras (teléfono).
3+
Objetivo:
4+
Tomar un número de teléfono y convertir cada dígito a su representación en palabras.
5+
"""
156

16-
for digit in phone:
17-
phone_in_letters += numbers[digit] + " "
7+
def main():
8+
"""Convierte cada dígito ingresado en su palabra correspondiente."""
9+
numbers = {
10+
"0": "Cero",
11+
"1": "Uno",
12+
"2": "Dos",
13+
"3": "Tres",
14+
"4": "Cuatro",
15+
"5": "Cinco",
16+
"6": "Seis",
17+
"7": "Siete",
18+
"8": "Ocho",
19+
"9": "Nueve"
20+
}
21+
phone_in_letters = ""
22+
phone = input("Teléfono: ").strip()
1823

19-
print(phone_in_letters)
24+
for digit in phone:
25+
if digit in numbers:
26+
phone_in_letters += numbers[digit] + " "
27+
else:
28+
phone_in_letters += "?" + " " # carácter no reconocido
29+
30+
print(f"Teléfono en palabras: {phone_in_letters.strip()}")
31+
32+
if __name__ == "__main__":
33+
main()
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
1+
"""
2+
Lección básica: Conversor de emojis.
3+
Objetivo:
4+
Reemplazar atajos como ':)' por su emoji correspondiente en un mensaje.
5+
"""
6+
17
def emoji_converter(message):
8+
"""Reemplaza secuencias por emojis en una cadena."""
29
emojis = {
310
":)": "😊",
411
":(": "😢",
512
":D": "😄",
613
":P": "😛",
714
";)": "😉"
815
}
9-
16+
1017
words = message.split(" ")
1118
converted_message = ""
12-
19+
1320
for word in words:
1421
converted_message += emojis.get(word, word) + " "
15-
22+
1623
return converted_message.strip()
1724

18-
# Inicio del programa
19-
message = input(">")
20-
output = emoji_converter(message)
21-
print(output)
25+
def main():
26+
"""Lee un mensaje del usuario y lo convierte usando emojis."""
27+
message = input("> ").strip()
28+
output = emoji_converter(message)
29+
print(output)
30+
31+
if __name__ == "__main__":
32+
main()
Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
1+
"""
2+
Ejercicio 19: Obtener el valor máximo de una lista
3+
4+
Descripción:
5+
Este ejercicio consiste en encontrar el valor máximo de una lista de números
6+
utilizando una función auxiliar definida en un módulo aparte (utils.py).
7+
8+
Objetivos:
9+
- Practicar la importación y uso de módulos propios
10+
- Implementar una función para encontrar el valor máximo en una lista
11+
- Comprender la reutilización de código
12+
13+
Recursos Adicionales:
14+
- Documentación oficial:
15+
https://docs.python.org/3/tutorial/modules.html
16+
- Funciones útiles:
17+
https://realpython.com/python-functions/
18+
19+
Autor: Jairo Cuartas
20+
Fecha: 2025-07-26
21+
"""
22+
123
import utils
2-
# from utils import get_max # Importa solo la funcion get_max
324

25+
# from utils import get_max # Importa solo la función get_max
26+
27+
# Lista de números de ejemplo
428
numbers = [1, 2, 3, 4, 5]
5-
max_number = utils.get_max(numbers)
629

30+
# Llama a la función get_max del módulo utils para obtener el valor máximo
31+
encontrado = utils.get_max(numbers)
32+
33+
print(f"El valor máximo es: {encontrado}") # Salida esperada: El valor máximo es: 5
734

8-
print(f"El valor maximo es: {max_number}")
35+
# =============================================================================
36+
# EJERCICIOS ADICIONALES
37+
# =============================================================================
38+
# 1. Modifica la lista para probar con otros valores y verifica el resultado
39+
# 2. Usa la función get_max con una lista de números negativos
40+
# 3. Implementa una función similar que devuelva el valor mínimo
Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,46 @@
1+
"""
2+
Ejercicio 20: Generar valores aleatorios con una clase Dado
3+
4+
Descripción:
5+
Este ejercicio consiste en crear una clase Dice que simula el lanzamiento de dos dados, generando valores aleatorios entre 1 y 10.
6+
7+
Objetivos:
8+
- Practicar la definición de clases y métodos
9+
- Usar la biblioteca random para generar números aleatorios
10+
- Comprender el retorno de tuplas desde métodos
11+
12+
Recursos Adicionales:
13+
- Documentación oficial:
14+
https://docs.python.org/3/library/random.html
15+
- Tutorial de clases:
16+
https://realpython.com/python3-object-oriented-programming/
17+
18+
Autor: Jairo Cuartas
19+
Fecha: 2025-07-26
20+
"""
21+
122
import random
223

324
class Dice:
425
def roll(self):
26+
"""
27+
Simula el lanzamiento de dos dados y retorna una tupla con los resultados.
28+
Returns:
29+
tuple: (valor_dado_1, valor_dado_2)
30+
"""
531
first_value = random.randint(1, 10)
632
second_value = random.randint(1, 10)
7-
833
return (first_value, second_value)
934

35+
# Crear una instancia de la clase Dice
1036
dice = Dice()
11-
print(dice.roll())
37+
38+
# Lanzar los dados y mostrar el resultado
39+
print(dice.roll()) # Salida esperada: (valor entre 1 y 10, valor entre 1 y 10)
40+
41+
# =============================================================================
42+
# EJERCICIOS ADICIONALES
43+
# =============================================================================
44+
# 1. Modifica la clase para lanzar un dado de 6 caras
45+
# 2. Lanza los dados 5 veces y muestra todos los resultados
46+
# 3. Calcula la suma de los valores obtenidos en cada lanzamiento

ejercicios/avanzados/utils.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,38 @@
1+
"""
2+
Módulo utils.py - Funciones auxiliares para ejercicios avanzados
3+
4+
Descripción:
5+
Este módulo contiene funciones auxiliares para ejercicios de listas y números.
6+
Incluye la función get_max para obtener el valor máximo de una lista de números.
7+
8+
Objetivos:
9+
- Practicar la definición de funciones en módulos
10+
- Reutilizar funciones en diferentes ejercicios
11+
12+
Recursos Adicionales:
13+
- Documentación oficial:
14+
https://docs.python.org/3/tutorial/modules.html
15+
- Funciones útiles:
16+
https://realpython.com/python-functions/
17+
18+
Autor: Jairo Cuartas
19+
Fecha: 2025-07-26
20+
"""
21+
122
def get_max(numbers):
23+
"""
24+
Devuelve el valor máximo de una lista de números.
25+
Args:
26+
numbers (list): Lista de números
27+
Returns:
28+
int or float: Valor máximo encontrado
29+
"""
230
max_number = numbers[0]
331
for number in numbers:
432
if number > max_number:
533
max_number = number
6-
return max_number
34+
return max_number
35+
36+
# Ejemplo de uso:
37+
# lista = [10, 5, 8, 20]
38+
# print(get_max(lista)) # Salida esperada: 20
Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
1-
# Nombre del paciente
2-
patient_name = "John smith"
1+
"""
2+
Lección básica: Datos de paciente.
3+
Objetivo:
4+
Mostrar nombre, edad y si es nuevo o existente en un resumen simple.
5+
"""
36

4-
# Edad del paciente
5-
age = 20
7+
def main():
8+
"""Define los datos del paciente y muestra el resumen."""
9+
patient_name = "John Smith"
10+
age = 20
11+
is_new_patient = True
612

7-
# Indica si el paciente es nuevo o existente
8-
is_new_patient = True
13+
estado = "Nuevo paciente" if is_new_patient else "Paciente existente"
14+
print(f"Paciente: {patient_name}")
15+
print(f"Edad: {age}")
16+
print(f"Estado: {estado}")
17+
18+
if __name__ == "__main__":
19+
main()

0 commit comments

Comments
 (0)