Guía de Ejercicios: Listas y Strings en Python
Introducción
Listas: Son colecciones ordenadas y mutables que pueden contener elementos de
diferentes tipos (números, strings, otras listas, etc.). Ejemplo: mi_lista = [1, "hola", 3.14].
Strings: Son secuencias inmutables de caracteres. Ejemplo: mi_string = "Python".
Objetivo: Practicar operaciones comunes como indexación, slicing, métodos de strings,
bucles, y combinación de listas y strings.
Ejercicios iniciales
1. Invertir un string
Descripción: Escribe un programa que tome un string ingresado por el usuario y lo devuelva
invertido.
Ejemplo:
Entrada: "Hola"
Salida: "aloH"
texto = input("Ingresa un string: ")
texto_invertido = texto[::-1]
print("String invertido:", texto_invertido)
Explicación: El slicing [::-1] invierte el string. Alternativamente, puedes usar un bucle para
construir el string carácter por carácter.
Variación: Intenta resolverlo sin usar slicing, usando un bucle for.
2. Contar vocales en un string
Descripción: Crea un programa que cuente cuántas vocales (a, e, i, o, u) hay en un string
ingresado por el usuario.
Ejemplo:
Entrada: "murcielago"
Salida: 5
texto = input("Ingresa un string: ").lower()
vocales = ['a', 'e', 'i', 'o', 'u']
contador = 0
for letra in texto:
if letra in vocales:
contador += 1
print("Número de vocales:", contador)
Explicación: Convertimos el string a minúsculas con .lower() para simplificar la comparación.
Luego, iteramos sobre cada carácter y verificamos si está en la lista de vocales.
Variación: Modifica el programa para que devuelva una lista con las vocales encontradas.
3. Crear una lista a partir de un string
Descripción: Escribe un programa que tome un string con palabras separadas por espacios
y cree una lista con esas palabras.
Ejemplo:
Entrada: "manzana pera banana"
Salida: ["manzana", "pera", "banana"]
texto = input("Ingresa un string con palabras: ")
lista_palabras = texto.split()
print("Lista de palabras:", lista_palabras)
Explicación: El método .split() divide el string en una lista usando espacios como separador
por defecto.
Variación: Modifica el programa para que el usuario especifique el separador (por ejemplo,
comas o guiones).
Ejercicios Intermedios
4. Eliminar duplicados de una lista
Descripción: Escribe un programa que tome una lista de strings y elimine los elementos
duplicados, manteniendo el orden original.
Ejemplo:
Entrada: ["sol", "luna", "sol", "estrella", "luna"]
Salida: ["sol", "luna", "estrella"]
lista = ["sol", "luna", "sol", "estrella", "luna"]
lista_sin_duplicados = []
for elemento in lista:
if elemento not in lista_sin_duplicados:
lista_sin_duplicados.append(elemento)
print("Lista sin duplicados:", lista_sin_duplicados)
Explicación: Iteramos sobre la lista original y añadimos cada elemento a una nueva lista
solo si no está ya presente.
Variación: Resuelve el ejercicio usando un conjunto (set) y convierte el resultado de vuelta a
una lista.
5. Palíndromo
Descripción: Escribe un programa que determine si un string ingresado por el usuario es un
palíndromo (se lee igual de izquierda a derecha que de derecha a izquierda, ignorando
mayúsculas y espacios).
Ejemplo:
Entrada: "Anita lava la tina"
Salida: True
texto = input("Ingresa un string: ").lower().replace(" ", "")
es_palindromo = texto == texto[::-1]
print("¿Es palíndromo?:", es_palindromo)
Explicación: Convertimos el string a minúsculas y eliminamos espacios con .replace().
Luego, comparamos el string con su versión invertida.
Variación: Modifica el programa para que también ignore signos de puntuación (por ejemplo,
!, ,).
6. Combinar listas y strings
Descripción: Escribe un programa que tome una lista de nombres y cree un string con los
nombres separados por comas y la palabra "y" antes del último nombre.
Ejemplo:
Entrada: ["Ana", "Juan", "María"]
Salida: "Ana, Juan y María"
nombres = ["Ana", "Juan", "María"]
if len(nombres) == 1:
resultado = nombres[0]
elif len(nombres) > 1:
resultado = ", ".join(nombres[:-1]) + " y " + nombres[-1]
else:
resultado = ""
print(resultado)
Explicación: Usamos .join() para unir todos los nombres excepto el último con comas.
Luego, concatenamos la palabra "y" y el último nombre.
Variación: Modifica el programa para manejar listas vacías o con un solo elemento.
Ejercicios Avanzados
7. Encontrar anagramas
Descripción: Escribe un programa que tome dos strings y determine si son anagramas
(contienen las mismas letras con la misma frecuencia, ignorando espacios y mayúsculas).
Ejemplo:
Entrada: "listen", "silent"
Salida: True
texto1 = input("Ingresa el primer string: ").lower().replace(" ", "")
texto2 = input("Ingresa el segundo string: ").lower().replace(" ", "")
es_anagrama = sorted(texto1) == sorted(texto2)
print("¿Son anagramas?:", es_anagrama)
Explicación: Convertimos ambos strings a minúsculas y eliminamos espacios. Luego,
ordenamos los caracteres de ambos strings y los comparamos.
Variación: Escribe una versión que no use sorted(), sino que cuente la frecuencia de cada
carácter.
8. Generar sublistas de palabras
Descripción: Escribe un programa que tome un string con varias palabras y devuelva una
lista de todas las subcadenas posibles que sean palabras válidas (usando un diccionario
pequeño de palabras válidas).
Ejemplo:
Entrada: "sol y luna"
Diccionario: ["sol", "luna", "y"]
Salida: ["sol", "y", "luna"]
texto = input("Ingresa un string: ")
diccionario = ["sol", "luna", "y"]
palabras = texto.split()
sublistas = [palabra for palabra in palabras if palabra in diccionario]
print("Sublistas válidas:", sublistas)
Explicación: Dividimos el string en palabras y usamos una lista por comprensión para filtrar
solo las palabras que están en el diccionario.
Variación: Modifica el programa para encontrar todas las combinaciones posibles de
palabras en el string, incluso si no están separadas por espacios.