Resumen de Ejercicios de Programación Python: Bucles y Estructuras de Datos

Ejercicios de Programación Python: Bucles y Estructuras de Datos

Introducción

Python es un lenguaje muy usado en la enseñanza universitaria por su sintaxis clara y su amplia biblioteca estándar. En este material revisaremos patrones comunes de programación y problemas típicos de práctica: generación de figuras en consola, manejo de listas anidadas, operaciones con matrices numéricas y aplicaciones sencillas de física y estadística. Cada sección incluye ejemplos prácticos, explicaciones paso a paso y ejercicios propuestos.

Definición: Una lista anidada es una lista cuyos elementos son a su vez listas. Se utiliza para representar matrices o tablas en memoria.

Generación de figuras y patrones con ciclos anidados

Los ciclos anidados consisten en colocar un ciclo dentro de otro. El ciclo externo normalmente itera sobre filas y el ciclo interno sobre columnas.

Principio básico

  • Ciclo externo: maneja las filas.
  • Ciclo interno: maneja los elementos de cada fila.

Definición: Un ciclo anidado es una estructura donde una iteración contiene otra iteración dentro de su cuerpo.

Ejemplo: imprimir una matriz de símbolos # con 3 filas y 5 columnas.

for i in range(3):
    for j in range(5):
        print("#", end="")
    print("")

Patrones tipo escalera y triángulos

  • Escalera (creciente de asteriscos): cada escalón aumenta en longitud.
  • Escalera rotada 90°: cada línea tiene longitud par múltiple según el patrón.

Ejemplo: escalera no rotada con N escalones (cada escalón tiene longitud $2k$ para $k=1\ldots N$):

n = int(input("Número de escalones: "))
for k in range(1, n+1):
    print("*" * (2*k))

Ejemplo: pirámide de altura $h$ hecha con "#" (altura 4):

h = int(input("Altura: "))
for i in range(1, h+1):
    print("#" * (2*i-1))

Definición: Una pirámide en consola suele representarse con líneas cuya longitud forma una progresión aritmética impar: $1,3,5,\dots$.

Pirámide invertida (función con ciclos anidados)

Implementación como función que recibe la altura y dibuja la pirámide invertida:

def piramide_invertida(h):
    for i in range(h, 0, -1):
        print("#" * (2*i-1))

h = int(input("Altura: "))
piramide_invertida(h)

Patrones numéricos y series

Triángulos de números crecientes

Patrón 1 (filas 1..N, cada fila muestra 1..k):

n = int(input("Número de filas: "))
for i in range(1, n+1):
    print(" ".join(str(j) for j in range(1, i+1)))

Patrón 2 (números consecutivos por filas):

n = int(input("Número de filas: "))
cont = 1
for i in range(1, n+1):
    fila = []
    for j in range(i):
        fila.append(str(cont))
        cont += 1
    print(" ".join(fila))

Factoriales y sumatorias

  • Factorial de $k$ se define como $k! = 1\cdot2\cdots k$.
  • Para calcular la suma $1! + 2! + \dots + N!$:
from math import factorial
N = int(input("Ingrese N: "))
s = sum(factorial(i) for i in range(1, N+1))
print(s)

Definición: El factorial $n!$ es el producto de los enteros positivos desde 1 hasta $n$.

N primeros primos

Algoritmo sencillo (criba básica por prueba de división):

def es_primo(x):
    if x < 2: return False
    i = 2
    while i*i <= x:
        if x % i == 0:
            return False
        i += 1
    return True

N = int(input("Cantidad de primos: "))
primos = []
num = 2
while len(primos) < N:
    if es_primo(num):
        primos.append(num)
    num += 1
print(primos)

Trabajo con listas anidadas (matrices)

Aunque no entraremos en estructuras avanzadas, sí vimos operaciones comunes con listas anidadas: recorrer, modificar elementos y calcular promedios por fila.

Ejemplo: convertir saltos de metros a centímetros y calcular promedios por atleta y global:

saltos = [[2.04,1.74,2.42],[3.43,2.14,2.02],[1.04,1.62,2.31]]
# convertir a cm
for i in range(len(saltos)):
    for j in range(len(saltos[i])):
        saltos[i][j] = saltos[i][j] * 100
# promedio por atleta
for i in range(len(saltos)):
    print(f"El promedio del atleta {i} es 
Regístrate para el resumen completo
TarjetasTest de conocimientosResumenPodcastMapa mental
Empezar gratis

¿Ya tienes cuenta? Iniciar sesión

Python - Patrones y problemas

Klíčové pojmy: Ciclos anidados: externo filas e interno columnas, Imprimir pirámide: longitudes impar $1,3,5,\dots$, Piramide invertida: iterar desde h hasta 1, Escalera con asteriscos: cada escalón puede tener longitud $2k$, Convertir unidades y promedios en listas anidadas, Calcular suma de factoriales con math.factorial, Encontrar N primos por prueba de división incremental, Tiempo de vuelo ideal $t_{vuelo}=\dfrac{2 v_{y,0}}{g}$, Maximizar alcance probando ángulos 0..90°, Fórmulas de mínimos cuadrados para $m$ y $b$, Matriz con borde de unos: condicionales en bucles, Recorrer y modificar listas anidadas con índices

## Introducción Python es un lenguaje muy usado en la enseñanza universitaria por su sintaxis clara y su amplia biblioteca estándar. En este material revisaremos patrones comunes de programación y problemas típicos de práctica: generación de figuras en consola, manejo de listas anidadas, operaciones con matrices numéricas y aplicaciones sencillas de física y estadística. Cada sección incluye ejemplos prácticos, explicaciones paso a paso y ejercicios propuestos. > Definición: Una lista anidada es una lista cuyos elementos son a su vez listas. Se utiliza para representar matrices o tablas en memoria. ## Generación de figuras y patrones con ciclos anidados Los ciclos anidados consisten en colocar un ciclo dentro de otro. El ciclo externo normalmente itera sobre filas y el ciclo interno sobre columnas. ### Principio básico - Ciclo externo: maneja las filas. - Ciclo interno: maneja los elementos de cada fila. > Definición: Un ciclo anidado es una estructura donde una iteración contiene otra iteración dentro de su cuerpo. Ejemplo: imprimir una matriz de símbolos # con 3 filas y 5 columnas. ```python for i in range(3): for j in range(5): print("#", end="") print("") ``` ### Patrones tipo escalera y triángulos - Escalera (creciente de asteriscos): cada escalón aumenta en longitud. - Escalera rotada 90°: cada línea tiene longitud par múltiple según el patrón. Ejemplo: escalera no rotada con N escalones (cada escalón tiene longitud $2k$ para $k=1\ldots N$): ```python n = int(input("Número de escalones: ")) for k in range(1, n+1): print("*" * (2*k)) ``` Ejemplo: pirámide de altura $h$ hecha con "#" (altura 4): ```python h = int(input("Altura: ")) for i in range(1, h+1): print("#" * (2*i-1)) ``` > Definición: Una pirámide en consola suele representarse con líneas cuya longitud forma una progresión aritmética impar: $1,3,5,\dots$. ### Pirámide invertida (función con ciclos anidados) Implementación como función que recibe la altura y dibuja la pirámide invertida: ```python def piramide_invertida(h): for i in range(h, 0, -1): print("#" * (2*i-1)) h = int(input("Altura: ")) piramide_invertida(h) ``` ## Patrones numéricos y series ### Triángulos de números crecientes Patrón 1 (filas 1..N, cada fila muestra 1..k): ```python n = int(input("Número de filas: ")) for i in range(1, n+1): print(" ".join(str(j) for j in range(1, i+1))) ``` Patrón 2 (números consecutivos por filas): ```python n = int(input("Número de filas: ")) cont = 1 for i in range(1, n+1): fila = [] for j in range(i): fila.append(str(cont)) cont += 1 print(" ".join(fila)) ``` ### Factoriales y sumatorias - Factorial de $k$ se define como $k! = 1\cdot2\cdots k$. - Para calcular la suma $1! + 2! + \dots + N!$: ```python from math import factorial N = int(input("Ingrese N: ")) s = sum(factorial(i) for i in range(1, N+1)) print(s) ``` > Definición: El factorial $n!$ es el producto de los enteros positivos desde 1 hasta $n$. ### N primeros primos Algoritmo sencillo (criba básica por prueba de división): ```python def es_primo(x): if x < 2: return False i = 2 while i*i <= x: if x % i == 0: return False i += 1 return True N = int(input("Cantidad de primos: ")) primos = [] num = 2 while len(primos) < N: if es_primo(num): primos.append(num) num += 1 print(primos) ``` ## Trabajo con listas anidadas (matrices) Aunque no entraremos en estructuras avanzadas, sí vimos operaciones comunes con listas anidadas: recorrer, modificar elementos y calcular promedios por fila. Ejemplo: convertir saltos de metros a centímetros y calcular promedios por atleta y global: ```python saltos = [[2.04,1.74,2.42],[3.43,2.14,2.02],[1.04,1.62,2.31]] # convertir a cm for i in range(len(saltos)): for j in range(len(saltos[i])): saltos[i][j] = saltos[i][j] * 100 # promedio por atleta for i in range(len(saltos)): print(f"El promedio del atleta {i} es