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
¿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