Si estás estudiando ingeniería, informática o ciencia de datos, es muy probable que te enfrentes a Python en tu primer año. Y seamos sinceros: la teoría está bien, pero en el examen te van a pedir código.
Para ayudarte a practicar, he recopilado 10 enunciados típicos que aparecen una y otra vez en los exámenes universitarios. He incluido la solución en código y una breve explicación de cómo funciona.
¡Abre tu editor de código y vamos a ello!
1. Comprobar si un número es Primo
El Enunciado: Escribe una función que reciba un número entero positivo y determine si es primo o no.
La Solución:
def es_primo(numero):
if numero < 2:
return False
# Iteramos desde 2 hasta la raíz cuadrada del número + 1
for i in range(2, int(numero**0.5) + 1):
if numero % i == 0:
return False
return True
# Prueba
n = 29
if es_primo(n):
print(f"{n} es primo")
else:
print(f"{n} no es primo")
2. La Sucesión de Fibonacci
El Enunciado: Generar los primeros n números de la serie de Fibonacci, donde cada número es la suma de los dos anteriores (empezando por 0 y 1).
def fibonacci(n):
secuencia = [0, 1]
while len(secuencia) < n:
# Sumamos los dos últimos elementos
siguiente = secuencia[-1] + secuencia[-2]
secuencia.append(siguiente)
return secuencia[:n]
print(fibonacci(10))
# Salida: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
3. Palíndromos (Detector de capicúas)
El Enunciado: Crear una función que detecte si una palabra o frase es un palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda), ignorando espacios.
def es_palindromo(texto):
# Eliminamos espacios y convertimos a minúsculas
texto = texto.replace(" ", "").lower()
# Comparamos el texto con su reverso
return texto == texto[::-1]
print(es_palindromo("Anita lava la tina")) # True
4. Factorial Recursivo
El Enunciado: Calcular el factorial de un número n (n!) utilizando recursividad.
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
# Salida: 120 (5*4*3*2*1)
5. Contar frecuencia de palabras
El Enunciado: Dado un texto, devolver un diccionario donde las claves sean las palabras y los valores sean cuántas veces aparecen.
def contar_palabras(texto):
palabras = texto.lower().split()
frecuencia = {}
for palabra in palabras:
if palabra in frecuencia:
frecuencia[palabra] += 1
else:
frecuencia[palabra] = 1
return frecuencia
texto_prueba = "Hola mundo hola python mundo"
print(contar_palabras(texto_prueba))
# Salida: {'hola': 2, 'mundo': 2, 'python': 1}
6. Ordenamiento Burbuja (Bubble Sort)
El Enunciado: Ordenar una lista de números de menor a mayor sin usar la función sort(), implementando el algoritmo de burbuja.
def bubble_sort(lista):
n = len(lista)
for i in range(n):
for j in range(0, n - i - 1):
# Intercambiar si el elemento encontrado es mayor que el siguiente
if lista[j] > lista[j + 1]:
lista[j], lista[j + 1] = lista[j + 1], lista[j]
return lista
numeros = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(numeros))
7. Invertir una cadena manualmente
El Enunciado: Invertir un string sin usar slicing ([::-1]), utilizando un bucle.
def invertir_cadena(cadena):
invertida = ""
for caracter in cadena:
invertida = caracter + invertida
return invertida
print(invertir_cadena("Python")) # Salida: nohtyP
8. Encontrar el número mayor en una lista
El Enunciado: Encontrar el valor máximo de una lista de números sin usar la función max().
def encontrar_maximo(lista):
maximo = lista[0]
for numero in lista:
if numero > maximo:
maximo = numero
return maximo
print(encontrar_maximo([10, 50, 2, 99, 23])) # Salida: 99
9. Transpuesta de una Matriz
El Enunciado: Dada una matriz (lista de listas), devolver su transpuesta (cambiar filas por columnas).
# Método clásico con bucles
def transpuesta_clasica(matriz):
filas = len(matriz)
columnas = len(matriz[0])
nueva_matriz = []
for j in range(columnas):
nueva_fila = []
for i in range(filas):
nueva_fila.append(matriz[i][j])
nueva_matriz.append(nueva_fila)
return nueva_matriz
m = [[1, 2], [3, 4], [5, 6]]
print(transpuesta_clasica(m))
# Salida: [[1, 3, 5], [2, 4, 6]]
10. Clase básica: Estudiante
El Enunciado: Crear una clase Estudiante que tenga nombre y una lista de notas. Incluir un método para calcular su promedio.
class Estudiante:
def __init__(self, nombre, notas):
self.nombre = nombre
self.notas = notas
def promedio(self):
if not self.notas:
return 0
return sum(self.notas) / len(self.notas)
alumno = Estudiante("Carlos", [8, 9, 7, 10])
print(f"El promedio de {alumno.nombre} es {alumno.promedio()}")
Conclusión
Dominar estos ejercicios te dará una base sólida para cualquier examen de introducción a la programación. Lo importante no es memorizar el código, sino entender la lógica que hay detrás de cada solución.
¿Te ha salido alguno diferente? ¿Tienes dudas con algún paso? ¡Déjame un comentario abajo y lo revisamos juntos!
No hay comentarios:
Publicar un comentario