¡Bienvenidos a larebelion.com! Si estás estudiando Ingeniería Informática o cualquier grado técnico en España, sabrás que Python es el "caballo de batalla" en las asignaturas de Fundamentos de Programación. Para ayudarte a superar tus exámenes y, sobre todo, a aprender a programar de verdad, hemos recopilado esta megaguía con 50 ejercicios reales extraídos de exámenes y prácticas de las mejores universidades del país.
No te limites a copiar y pegar. Intenta resolver el enunciado por ti mismo y luego consulta la solución estilizada como en Sublime Text (Monokai) para entender el enfoque correcto. ¡Que comience la rebelión del código!
Parte 1: Fundamentos y Tipos de Datos Simplificados
Esta sección cubre lo básico: bucles, condicionales y operaciones elementales con listas y cadenas. Esenciales para primero de carrera.
1. Cuadrados de los Números Pares en una Lista
- Universidad: Universidad Politécnica de Madrid (UPM)
- Asignatura: Grado en Ingeniería Informática - Fundamentos de Programación
Enunciado: Escribir una función que reciba una lista de números enteros y devuelva una nueva lista que contenga los cuadrados de aquellos números de la lista original que sean pares.
# Usamos una "list comprehension" para eficiencia
return [x**2 for x in lista if x % 2 == 0]
# Test de prueba
mi_lista = [1, 2, 3, 4, 5, 6]
print("Lista original:", mi_lista)
print("Resultado:", cuadrados_pares(mi_lista)) # Output: [4, 16, 36]
2. Detector de Palíndromos (Ignorando Espacios y Mayúsculas)
- Universidad: Universidad de Granada (UGR)
- Asignatura: Departamento de Ciencias de la Computación e IA
Enunciado: Crear un programa que determine si una cadena de texto es un palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda). El algoritmo debe ignorar los espacios en blanco y no distinguir entre mayúsculas y minúsculas.
# Normalizar: minúsculas y quitar espacios
s = cadena.lower().replace(" ", "")
# Comparar la cadena con su inversa
return s == s[::-1]
# Test de prueba
print(es_palindromo("Anita lava la tina")) # True
print(es_palindromo("Python no lo es")) # False
3. Contador de Palabras en un Texto
- Universidad: Universidad de Valencia (UV)
- Asignatura: Escuela Técnica Superior de Ingeniería (ETSE)
Enunciado: Desarrollar una función que reciba una cadena de texto larga y devuelva un diccionario donde las claves sean las palabras únicas encontradas y los valores sean la frecuencia de aparición de cada palabra.
palabras = texto.lower().split()
frecuencias = {}
for palabra in palabras:
# Eliminar puntuación básica si es necesario
palabra = palabra.strip(".,!?")
if palabra in frecuencias:
frecuencias[palabra] += 1
else:
frecuencias[palabra] = 1
return frecuencias
# Test de prueba
texto_ejemplo = "Hola mundo. Hola Python, el mundo es grande."
print(contar_palabras(texto_ejemplo))
# Output: {'hola': 2, 'mundo': 2, 'python': 1, 'el': 1, 'es': 1, 'grande': 1}
4. Cálculo del Factorial (Recursivo)
- Universidad: Universidad de Sevilla (US)
- Asignatura: Facultad de Informática y Estadística
Enunciado: Implementar una función recursiva para calcular el factorial de un número entero no negativo. Asegurarse de manejar los casos base e incluir una comprobación para números negativos.
if n < 0:
return "Error: No definido para negativos"
# Caso base
if n == 0 or n == 1:
return 1
# Caso recursivo
return n * factorial(n - 1)
# Test de prueba
print("Factorial de 5:", factorial(5)) # 120
5. Búsqueda Binaria (Algoritmo Eficiente)
- Universidad: Universidad Carlos III de Madrid (UC3M)
- Asignatura: Algoritmos y Estructuras de Datos
Enunciado: Implementar el algoritmo de búsqueda binaria para encontrar un elemento en una lista ordenada. La función debe devolver el índice del elemento si se encuentra, o -1 si no está presente.
izq, der = 0, len(lista) - 1
while izq <= der:
mid = (izq + der) // 2
if lista[mid] == x:
return mid
elif lista[mid] < x:
izq = mid + 1
else:
der = mid - 1
return -1
# Test de prueba
lista_ordenada = [2, 5, 8, 12, 16, 23, 38]
print("Índice de 12:", busqueda_binaria(lista_ordenada, 12)) # 3
...[Continuará en el próximo bloque...]
No hay comentarios:
Publicar un comentario