Páginas

importancia de ciclo FOR en vectores y matrices

¿Por qué el ciclo for es clave para trabajar con vectores y matrices en Python?

Cuando trabajamos con estructuras como listas (vectores) o listas de listas (matrices), el ciclo for se vuelve esencial. Esto se debe a que nos permite recorrer de forma ordenada y controlada cada elemento de estas estructuras, sin importar su tamaño o dimensión.

🔁 Recorriendo un vector (lista unidimensional)

Un vector en Python es simplemente una lista. Usar for nos permite acceder a cada elemento directamente sin manejar índices:


def recorrer_vector(vector):
    for num in vector:
        print("Elemento:", num)
    return

# Prueba
a = [10, 20, 30, 40, 50]
recorrer_vector(a)

Esto imprimirá cada número del vector uno por uno.

🔁 Recorriendo una matriz (lista bidimensional)

Una matriz en Python es una lista de listas. Para recorrer todos sus elementos usamos un doble ciclo for:


def recorrer_matriz(matriz):
    for fila in matriz:
        for elemento in fila:
            print("Elemento:", elemento)
    return

# Prueba
m = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
recorrer_matriz(m)

Este recorrido es más limpio y legible que manejar manualmente los índices.

📌 ¿Y si usáramos while?

Podríamos hacer lo mismo con while, pero sería más largo y propenso a errores. Mira cómo se complica:


def recorrer_matriz_while(matriz):
    i = 0
    while i < len(matriz):
        j = 0
        while j < len(matriz[i]):
            print("Elemento:", matriz[i][j])
            j += 1
        i += 1
    return

# Prueba
recorrer_matriz_while(m)

El resultado es el mismo, pero el código es más difícil de leer y mantener.

✅ Conclusión

El ciclo for es la herramienta más clara, segura y eficiente para recorrer vectores y matrices en Python. Su simplicidad lo hace ideal tanto para aprender como para trabajar en proyectos reales.

declaración de función en Python

Declaración de Funciones con Anotaciones de Tipo en Python

En Python, puedes agregar anotaciones de tipo a las funciones para indicar qué tipo de valores se esperan como entrada y qué tipo se devolverá. Esto ayuda a hacer el código más legible y facilita la comprensión del tipo de datos que está manejando cada función.

Sintaxis básica:

def nombre_de_funcion(parametro1: tipo1, parametro2: tipo2) -> tipo_de_retorno:
    # Cuerpo de la función
    return valor

Ejemplo de una función que suma dos números:

def suma_numeros(x: int, y: int) -> int:
    w: int
    w = x + y
    return w

En este ejemplo:

  • x: int y y: int son parámetros de la función suma_numeros, y se espera que ambos sean números enteros (tipos int).
  • -> int indica que la función devolverá un valor de tipo entero.
  • Dentro de la función, declaramos una variable w, que también es de tipo int, y luego le asignamos la suma de x y y.
  • Finalmente, la función devuelve el valor de w, que es el resultado de la suma.

Prueba de la función:

# Llamamos a la función con los valores 3 y 5
resultado = suma_numeros(3, 5)
print(resultado)  # Imprime 8

Este código imprimirá: 8, ya que suma 3 y 5 y devuelve el resultado.

Resumen:

  • Las anotaciones de tipo no cambian el comportamiento del programa, pero ayudan a entender mejor el código y facilitan el uso de herramientas de análisis estático como linters o IDEs que pueden sugerir errores.
  • Es importante entender que las anotaciones de tipo en Python son opcionales, pero mejoran la calidad y legibilidad del código.

elif en Python

Condicionales con elif en Python

En Python, la palabra clave elif (abreviatura de "else if") nos permite verificar varias condiciones en una secuencia, si la primera condición no se cumple. Usar elif ayuda a manejar múltiples casos sin necesidad de anidar varios if y facilita la lectura del código.

Sintaxis básica con elif:

if condicion1:
    # Bloque de código si la condición 1 es verdadera
elif condicion2:
    # Bloque de código si la condición 1 es falsa y la condición 2 es verdadera
else:
    # Bloque de código si ninguna condición anterior se cumple

Ejemplo con elif:

x = 10
if x > 15:
    print("x es mayor que 15")
elif x == 10:
    print("x es igual a 10")
else:
    print("x es menor que 10")

Este código imprimirá: x es igual a 10, porque la condición x == 10 se cumple, pero la primera condición no es verdadera.

Ejemplo práctico: Usando elif para manejar diferentes rangos de edad:

def verificar_edad(edad):
    """
    Verifica la categoría de edad de una persona.
    """
    if edad < 13:
        return "Eres un niño."
    elif edad < 18:
        return "Eres un adolescente."
    elif edad < 60:
        return "Eres un adulto."
    else:
        return "Eres un adulto mayor."

# Prueba
resultado = verificar_edad(25)
print(resultado)

Este código imprimirá: Eres un adulto., ya que la edad es mayor o igual a 18, pero menor de 60.

Resumen:

  • elif es útil cuando tienes varias condiciones que se deben evaluar de manera secuencial.
  • Si la condición del if no se cumple, se evalúa la siguiente condición en el bloque elif.
  • Si ninguna condición se cumple, se ejecuta el bloque else (si existe).

if anidado en Python

Condicionales Anidados con if en Python

En Python, podemos usar if dentro de otro if para evaluar múltiples condiciones de manera más detallada. Esto se conoce como condicional anidado.

Sintaxis de un if anidado:

if condicion1:
    if condicion2:
        # Bloque de código si ambas condiciones son verdaderas

El bloque de código dentro del segundo if solo se ejecutará si tanto la primera condición como la segunda son verdaderas.

Ejemplo de un if anidado:

x = 10
y = 5

if x > 3:
    if y < 10:
        print("x es mayor que 3 y y es menor que 10")

Este código imprimirá: x es mayor que 3 y y es menor que 10, ya que ambas condiciones se cumplen.

Ejemplo con else y elif: Podemos combinar los condicionales anidados con else y elif para manejar más casos.

x = 7
y = 4

if x > 5:
    if y > 5:
        print("x es mayor que 5 y y también es mayor que 5")
    else:
        print("x es mayor que 5 pero y es menor o igual a 5")
else:
    print("x es menor o igual a 5")

Este código imprimirá: x es mayor que 5 pero y es menor o igual a 5, ya que la primera condición es verdadera, pero la segunda es falsa.

Ejemplo práctico con función:

def verificar_edades(edad):
    """
    Verifica si una persona es menor de edad, mayor de edad o adulto mayor.
    """
    if edad < 18:
        return "Eres menor de edad."
    else:
        if edad < 60:
            return "Eres adulto."
        else:
            return "Eres adulto mayor."

# Prueba
resultado = verificar_edades(25)
print(resultado)

Este código imprimirá: Eres adulto., ya que la edad es mayor o igual a 18, pero menor de 60.

Resumen:

  • Los condicionales anidados permiten verificar varias condiciones dentro de un bloque.
  • Se deben usar con cuidado para evitar una lógica confusa o difícil de seguir.
  • Pueden combinarse con else y elif para evaluar múltiples opciones.

Estructura Bucle For

Bucle For

El bucle for itera sobre una secuencia (como una lista, un rango, etc.), ejecutando el cuerpo del bucle para cada elemento.

Estructura básica (con rangos):

for variable in iterable:
    # cuerpo del bucle 
    instrucciones 

Ejemplo:

"""
Suma todos los enteros desde 0 hasta prueba y devuelve el total.
"""

def ejm_for(prueba):
    total = 0 
    for i in range(prueba + 1):  # comienza en 0 y termina en prueba
        print(i)                 # imprime cada número por separado
        total += i               # acumula el valor de i
    return total

Si queremos iniciar desde 1 y no desde 0, usamos:

Ejemplo:

def suma_for(prueba):
    total = 0
    for i in range(1, prueba + 1):  # desde 1 hasta prueba (inclusive)
        print(i)
        total += i
    return total

# Prueba
prueba = suma_for(5)
print(prueba)

Explicación: Comienza desde 1 y termina en 6, pero range nunca toca el último valor, por eso imprime del 1 al 5.

¿Quieres saber por qué usamos prueba + 1? Mira este post:

https://tutekogeg.blogspot.com/2025/05/por-que-prueba-1.html

  • prueba + 1 es universal cuando queremos incluir el último número.
  • Ejemplo fijo: for i in range(6) recorre 0 a 5.
  • Por defecto, el iterador empieza en 0: for i in range(prueba + 1)
  • Para empezar en 1: for i in range(1, prueba + 1)
  • total += i es lo mismo que total = total + i

¿Por que " prueba + 1 "?

¿Cómo funciona range(1, prueba + 1) en Python?

Imagina que tienes una escalera con peldaños numerados del 1 al 5 y quieres subir hasta el último peldaño.

En Python, si usas:

range(1, prueba + 1)
  

Es como decir: "Empiezo en el peldaño 1 y subo hasta el número prueba + 1, pero sin tocar ese último".

Por ejemplo, si prueba = 5:

  • Primero se calcula prueba + 1, o sea 6
  • Luego se hace range(1, 6)
  • Y eso genera: 1, 2, 3, 4, 5

Este comportamiento es muy útil cuando queremos contar desde un número hasta otro, incluyendo el último.

Ejemplo práctico:

def imprimir_peldaños(prueba):
    for i in range(1, prueba + 1):
        print("Subiendo al peldaño", i)

# Prueba
imprimir_peldaños(5)
  

Este código imprimirá cada peldaño desde el 1 hasta el 5, uno por uno.

Estructura Bucle while

Bucle While

El bucle while repite un bloque de código mientras se cumpla una condición booleana.

Estructura básica:

 
while condición:
    # cuerpo del bucle 
    instrucciones
  

Ejemplo simple:

i = 1
while i < 6:
    print(i)
    i += 1
  

  • Inicialización: Antes del while, normalmente se inicializa una o más variables de control.
  • Condición: Se evalúa al inicio de cada iteración. Si es True, entra al cuerpo; si es False, sale del bucle.
  • Actualización: Dentro del cuerpo se debe modificar al menos una variable para que la condición deje de cumplirse y evitar bucles infinitos.

Ejemplo completo en función:

"""
Imprime cada entero desde 1 hasta prueba, usando while,
y devuelve la suma total.
"""

def suma_total(prueba):
    total = 0 # acumulativo
    i = 1 # comienza con 1, itelador
    while i <= prueba: # siempre menor igual 
        print(i) # imprime el itelador 
        total = total + i # suma la variable acumulativo con el itelador
        i += 1 # se incrementa el itelador 
    return total 

# Prueba
print("Usando while")
resultado = suma_total(5)
print("Resultado:", resultado)