Skip to content

Commit b751da4

Browse files
committed
docs: mejorar documentación de lecciones de programación avanzada (20-25) y agregar ejercicio avanzado 20_generate_random_values.py\n\n- Documentación completa en español para todas las lecciones de programación avanzada (20 a 25)\n- Docstrings detallados, comentarios explicativos y ejemplos de salida\n- Ejercicios prácticos y recursos adicionales\n- Mejor legibilidad y estructura\n- Actualización de fechas a 2025-07-24\n- Actualización de CHANGELOG.md para versión 1.4.0\n- Agregado ejercicio avanzado 20_generate_random_values.py
1 parent 10fc345 commit b751da4

File tree

8 files changed

+481
-16
lines changed

8 files changed

+481
-16
lines changed

CHANGELOG.md

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

20+
## [1.4.0] - 2025-07-24
21+
22+
### Added
23+
- Documentación completa en español para todas las lecciones de programación avanzada (20 a 25)
24+
- Docstrings detallados con objetivos, conceptos clave y recursos adicionales
25+
- Comentarios explicativos para cada ejemplo de código
26+
- Ejemplos de salida esperada para mejor comprensión
27+
- Ejercicios prácticos adicionales en cada lección
28+
- Sección de conceptos importantes resumidos
29+
- Variaciones y experimentos opcionales para práctica
30+
- Enlaces a documentación oficial de Python
31+
- Fechas actualizadas a 2025-07-24
32+
33+
### Changed
34+
- Mejorados nombres de variables y estructura de ejemplos para mayor claridad en la sección de programación avanzada
35+
- Mejorada legibilidad general del código en la sección de programación avanzada
36+
- Actualizada documentación con formato consistente
37+
38+
### Fixed
39+
- Corregidos errores de ortografía y estilo en comentarios
40+
- Mejorada consistencia en el estilo de documentación
41+
2042
## [1.3.0] - 2025-07-21
2143

2244
### Added
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import random
2+
3+
class Dice:
4+
def roll(self):
5+
first_value = random.randint(1, 10)
6+
second_value = random.randint(1, 10)
7+
8+
return (first_value, second_value)
9+
10+
dice = Dice()
11+
print(dice.roll())
Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,70 @@
1+
"""
2+
Lección 20: Funciones en Python
3+
4+
Descripción:
5+
Esta lección cubre la definición y uso de funciones en Python. Aprenderás a crear funciones con parámetros, a llamarlas y a entender la importancia de la reutilización de código.
6+
7+
Objetivos:
8+
- Comprender cómo definir y llamar funciones
9+
- Usar parámetros y argumentos
10+
- Entender el alcance y la reutilización de funciones
11+
- Manejar errores comunes al llamar funciones
12+
13+
Conceptos Clave:
14+
- def: Palabra clave para definir funciones
15+
- Parámetro: Variable en la definición de la función
16+
- Argumento: Valor pasado a la función al llamarla
17+
- Reutilización: Escribir código una vez y usarlo muchas veces
18+
19+
Recursos Adicionales:
20+
- Documentación oficial: https://docs.python.org/3/tutorial/controlflow.html#defining-functions
21+
- Tutorial de funciones: https://realpython.com/defining-your-own-python-function/
22+
23+
Autor: Jairo Cuartas
24+
Fecha: 2025-07-24
25+
"""
26+
27+
# =============================================================================
28+
# EJEMPLO 1: Definir y llamar una función con parámetros
29+
# =============================================================================
130
def greet_user(first_name, last_name):
231
print(f"Hi {first_name} {last_name}!")
332

4-
greet_user("John", "Doe")
5-
#greet_user() --> TypeError: greet_user() missing 2 required positional arguments: 'first_name' and 'last_name'
33+
# Llamada correcta
34+
greet_user("John", "Doe") # Salida esperada: Hi John Doe!
35+
36+
# =============================================================================
37+
# EJEMPLO 2: Error común al llamar funciones
38+
# =============================================================================
39+
#greet_user() # TypeError: greet_user() missing 2 required positional arguments: 'first_name' and 'last_name'
40+
41+
# =============================================================================
42+
# EJERCICIOS PRÁCTICOS
43+
# =============================================================================
44+
# 1. Define una función que reciba un nombre y lo salude
45+
# 2. Define una función que reciba dos números y retorne su suma
46+
# 3. Llama a la función con diferentes argumentos y muestra los resultados
47+
48+
# =============================================================================
49+
# CONCEPTOS IMPORTANTES
50+
# =============================================================================
51+
"""
52+
1. Las funciones se definen con def y pueden tener uno o más parámetros
53+
2. Los argumentos deben coincidir en número y orden con los parámetros
54+
3. Las funciones ayudan a organizar y reutilizar el código
55+
4. Puedes documentar funciones con docstrings
56+
5. Si olvidas pasar argumentos requeridos, obtendrás un TypeError
57+
"""
58+
59+
# =============================================================================
60+
# VARIACIONES Y EXPERIMENTOS
61+
# =============================================================================
62+
# Descomenta para experimentar:
63+
# def suma(a, b):
64+
# return a + b
65+
# print(suma(3, 5))
66+
#
67+
# def saludar(nombre="Invitado"):
68+
# print(f"Hola {nombre}")
69+
# saludar()
70+
# saludar("Ana")
Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,77 @@
1+
"""
2+
Lección 21: Manejo de Excepciones (exceptions)
3+
4+
Descripción:
5+
Esta lección cubre el manejo de errores y excepciones en Python. Aprenderás a usar try, except y a capturar errores comunes para evitar que tu programa se detenga inesperadamente.
6+
7+
Objetivos:
8+
- Comprender cómo funciona el manejo de excepciones
9+
- Usar try y except para capturar errores
10+
- Mostrar mensajes personalizados ante errores
11+
- Escribir código más robusto y seguro
12+
13+
Conceptos Clave:
14+
- try: Bloque donde puede ocurrir un error
15+
- except: Bloque que se ejecuta si ocurre un error
16+
- ValueError: Excepción común al convertir tipos
17+
- Robustez: El programa no se detiene ante errores esperados
18+
19+
Recursos Adicionales:
20+
- Documentación oficial: https://docs.python.org/3/tutorial/errors.html
21+
- Tutorial de excepciones: https://realpython.com/python-exceptions/
22+
23+
Autor: Jairo Cuartas
24+
Fecha: 2025-07-24
25+
"""
26+
27+
# =============================================================================
28+
# EJEMPLO 1: Manejo básico de excepciones
29+
# =============================================================================
130
try:
231
age = int(input("Ingrese su edad: "))
332
print(age)
433
except ValueError:
5-
print("Por favor, ingrese un número válido para la edad.")
34+
print("Por favor, ingrese un número válido para la edad.")
35+
# Salida esperada:
36+
# Si el usuario ingresa un número: muestra el número
37+
# Si el usuario ingresa texto: muestra el mensaje de error
38+
39+
# =============================================================================
40+
# EJEMPLO 2: Capturar múltiples excepciones
41+
# =============================================================================
42+
try:
43+
numero = int(input("Ingrese un número: "))
44+
resultado = 10 / numero
45+
print(resultado)
46+
except ValueError:
47+
print("Debes ingresar un número entero.")
48+
except ZeroDivisionError:
49+
print("No se puede dividir por cero.")
50+
51+
# =============================================================================
52+
# EJERCICIOS PRÁCTICOS
53+
# =============================================================================
54+
# 1. Pide al usuario un número y muestra su inverso. Maneja el error si ingresa cero o texto.
55+
# 2. Pide dos números y muestra la división. Captura errores de tipo y de división por cero.
56+
# 3. Usa try/except para validar la entrada de un correo electrónico (usa input y verifica '@').
57+
58+
# =============================================================================
59+
# CONCEPTOS IMPORTANTES
60+
# =============================================================================
61+
"""
62+
1. El bloque try contiene el código que puede fallar
63+
2. except captura el error y permite manejarlo sin detener el programa
64+
3. Puedes tener varios except para diferentes tipos de error
65+
4. Es buena práctica mostrar mensajes claros al usuario
66+
5. El manejo de excepciones hace tu código más robusto y profesional
67+
"""
68+
69+
# =============================================================================
70+
# VARIACIONES Y EXPERIMENTOS
71+
# =============================================================================
72+
# Descomenta para experimentar:
73+
# try:
74+
# lista = [1, 2, 3]
75+
# print(lista[5])
76+
# except IndexError:
77+
# print("Índice fuera de rango.")
Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
1+
"""
2+
Lección 22: Clases y Objetos (Programación Orientada a Objetos)
3+
4+
Descripción:
5+
Esta lección cubre la creación y uso de clases y objetos en Python. Aprenderás a definir clases, crear instancias (objetos), usar el método __init__ y acceder a atributos y métodos.
6+
7+
Objetivos:
8+
- Comprender qué es una clase y un objeto
9+
- Definir clases con atributos y métodos
10+
- Crear instancias de una clase
11+
- Usar el método __init__ para inicializar objetos
12+
13+
Conceptos Clave:
14+
- Clase: Plantilla para crear objetos
15+
- Objeto: Instancia de una clase
16+
- __init__: Método especial para inicializar objetos
17+
- self: Referencia al objeto actual
18+
- Atributo: Variable asociada a un objeto
19+
- Método: Función asociada a una clase
20+
21+
Recursos Adicionales:
22+
- Documentación oficial: https://docs.python.org/3/tutorial/classes.html
23+
- Tutorial de POO: https://realpython.com/python3-object-oriented-programming/
24+
25+
Autor: Jairo Cuartas
26+
Fecha: 2025-07-24
27+
"""
28+
29+
# =============================================================================
30+
# EJEMPLO 1: Definir una clase y crear objetos
31+
# =============================================================================
32+
33+
134
class Person:
235
def __init__(self, name="", last_name=""):
336
self.name = name
@@ -6,10 +39,54 @@ def __init__(self, name="", last_name=""):
639
def get_name(self):
740
print("get_name")
841

42+
43+
# Crear una instancia de la clase Person
944
person1 = Person()
1045
person1.name = "Jairo"
1146
person1.last_name = "Cuartas"
12-
print(f"Hi, {person1.name} {person1.last_name}")
47+
print(
48+
f"Hi, {person1.name} {person1.last_name}"
49+
) # Salida esperada: Hi, Jairo Cuartas
1350

51+
# Crear otra instancia con parámetros
1452
person2 = Person("John", "Doe")
15-
print(f"Hi, {person2.name} {person2.last_name}")
53+
print(
54+
f"Hi, {person2.name} {person2.last_name}"
55+
) # Salida esperada: Hi, John Doe
56+
57+
# =============================================================================
58+
# EJERCICIOS PRÁCTICOS
59+
# =============================================================================
60+
# 1. Define una clase Animal con atributos nombre y especie
61+
# 2. Crea un método que imprima una presentación del animal
62+
# 3. Crea varios objetos Animal y llama al método de presentación
63+
64+
# =============================================================================
65+
# CONCEPTOS IMPORTANTES
66+
# =============================================================================
67+
"""
68+
1. Una clase es una plantilla para crear objetos
69+
2. El método __init__ se llama automáticamente al crear un objeto
70+
3. self permite acceder a los atributos y métodos del objeto
71+
4. Puedes crear múltiples instancias de una clase
72+
5. Los métodos pueden usar self para modificar atributos
73+
"""
74+
75+
# =============================================================================
76+
# VARIACIONES Y EXPERIMENTOS
77+
# =============================================================================
78+
# Descomenta para experimentar:
79+
#
80+
# class Animal:
81+
#
82+
# def __init__(self, nombre, especie):
83+
# self.nombre = nombre
84+
# self.especie = especie
85+
#
86+
# def presentar(self):
87+
# print(f"Soy {self.nombre} y soy un {self.especie}")
88+
#
89+
# perro = Animal("Max", "perro")
90+
# gato = Animal("Luna", "gato")
91+
# perro.presentar()
92+
# gato.presentar()

lecciones/programacion-avanzada/23_inherence.py

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
1+
"""
2+
Lección 23: Herencia en Programación Orientada a Objetos
3+
4+
Descripción:
5+
Esta lección cubre el concepto de herencia en Python. Aprenderás a crear clases que heredan atributos y métodos de otras clases, a sobrescribir métodos y a extender funcionalidades.
6+
7+
Objetivos:
8+
- Comprender qué es la herencia y para qué se usa
9+
- Definir clases base y clases derivadas
10+
- Heredar y sobrescribir métodos
11+
- Usar super() para acceder a la clase base
12+
13+
Conceptos Clave:
14+
- Herencia: Permite que una clase derive de otra
15+
- Clase base (padre): Clase de la que se hereda
16+
- Clase derivada (hija): Clase que hereda
17+
- Sobrescritura: Redefinir métodos en la clase hija
18+
- super(): Llama métodos de la clase base
19+
20+
Recursos Adicionales:
21+
- Documentación oficial:
22+
https://docs.python.org/3/tutorial/classes.html#inheritance
23+
- Tutorial de herencia:
24+
https://realpython.com/python-inheritance/
25+
26+
Autor: Jairo Cuartas
27+
Fecha: 2025-07-24
28+
"""
29+
30+
# =============================================================================
31+
# EJEMPLO 1: Definir una clase base y clases derivadas
32+
# =============================================================================
33+
34+
135
class Mammal:
236
def speak(self):
337
print("Some sound")
@@ -13,7 +47,41 @@ def be_annoying(self):
1347

1448

1549
cat1 = Cat()
16-
cat1.be_annoying()
50+
cat1.be_annoying() # Salida esperada: Vroom
1751

1852
dog1 = Dog()
19-
dog1.speak()
53+
dog1.speak() # Salida esperada: Some sound
54+
55+
# =============================================================================
56+
# EJERCICIOS PRÁCTICOS
57+
# =============================================================================
58+
# 1. Define una clase base Vehiculo y dos clases derivadas: Coche y Moto
59+
# 2. Agrega métodos específicos a cada clase derivada
60+
# 3. Crea objetos de cada clase y llama a sus métodos
61+
62+
# =============================================================================
63+
# CONCEPTOS IMPORTANTES
64+
# =============================================================================
65+
"""
66+
1. La herencia permite reutilizar código y extender funcionalidades
67+
2. Una clase derivada hereda todos los métodos y atributos de la base
68+
3. Puedes sobrescribir métodos en la clase hija
69+
4. super() permite llamar métodos de la clase base
70+
5. Es útil para modelar jerarquías y relaciones "es-un"
71+
"""
72+
73+
# =============================================================================
74+
# VARIACIONES Y EXPERIMENTOS
75+
# =============================================================================
76+
# Descomenta para experimentar:
77+
# class Vehiculo:
78+
# def arrancar(self):
79+
# print("Vehículo arrancado")
80+
#
81+
# class Coche(Vehiculo):
82+
# def tocar_bocina(self):
83+
# print("Beep beep!")
84+
#
85+
# coche = Coche()
86+
# coche.arrancar()
87+
# coche.tocar_bocina()

0 commit comments

Comments
 (0)