Bloque 110. Cadenas de texto
Revisa los siguientes apartados de la Unidad para resolver los ejercicios:
Las cadenas de texto (str) ya las conoces desde el bloque 102, y las has usado en input(), print() y f-strings. En este bloque profundizas en cómo indexarlas, recorrerlas carácter a carácter y transformarlas con sus métodos propios.
Ejercicio 1. Contador de vocales
Pide al usuario una palabra y cuenta cuántas vocales contiene (a, e, i, o, u, en mayúsculas o minúsculas), recorriendo la cadena carácter a carácter con un for y usando el operador in para comprobar cada carácter contra la cadena "aeiouAEIOU".
💾 Haz un commit al terminar el ejercicio.
Ejercicio 2. Transformaciones de una frase
Pide al usuario una frase y muestra: cuántos caracteres tiene en total (len()), la misma frase en mayúsculas, la misma en minúsculas, y la misma con cada palabra capitalizada (usa title()).
💾 Haz un commit al terminar el ejercicio.
Ejercicio 3. Iniciales
Pide al usuario su nombre completo (nombre y apellidos, separados por espacios) y muestra sus iniciales en mayúsculas separadas por puntos (por ejemplo, de "ada lovelace" obtén "A.L.").
Usa split() para separar las palabras y recorre el resultado con un for, accediendo al primer carácter de cada una.
💾 Haz un commit al terminar el ejercicio.
Ejercicio 4. Detector de palíndromos
Pide al usuario una palabra y comprueba si es un palíndromo (se lee igual al derecho que al revés), como "reconocer" o "ana".
Usa slicing con paso -1 para invertir la cadena y compárala con la original (convierte ambas a minúsculas antes de comparar, para que "Ana" también cuente como palíndromo).
💾 Haz un commit al terminar el ejercicio.
Ejercicio 5. Limpieza y validación de un correo electrónico
Pide al usuario un correo electrónico (puede tener espacios de más al principio o al final, por error de tecleo). Elimina esos espacios sobrantes con strip(), conviértelo a minúsculas y comprueba, con el operador in, si contiene el carácter @. Muestra el correo ya limpio si es válido, o el mensaje "Correo no válido: falta el símbolo @" si no lo contiene.
💾 Haz un commit al terminar el ejercicio.
Ejercicio 6. Censura de palabras
Pide al usuario una frase y una palabra a censurar dentro de ella. Muestra cuántas palabras tiene la frase en total y, después, la frase con esa palabra sustituida por tantos asteriscos como letras tenga.
💾 Haz un commit al terminar el ejercicio.
Ejercicio 7. Comprobador de extensión
Pide al usuario el nombre de un fichero y comprueba si termina en .py. Si no es así, muestra el mensaje "No es un fichero Python".
💾 Haz un commit al terminar el ejercicio.
Ejercicio 8. Validador de contraseña
Pide al usuario una contraseña y compruébala con tres condiciones, mostrando el mensaje correspondiente para cada una que no se cumpla:
- Tiene al menos 8 caracteres. Si no, muestra
"La contraseña debe tener al menos 8 caracteres". - Contiene al menos un dígito: recorre la cadena con un
fory comprueba si algún carácter está en"0123456789"con el operadorin. Si no, muestra"La contraseña debe contener al menos un dígito". - Contiene al menos una letra mayúscula: recorre la cadena y comprueba si algún carácter está en
"ABCDEFGHIJKLMNOPQRSTUVWXYZ". Si no, muestra"La contraseña debe contener al menos una letra mayúscula".
💾 Haz un commit al terminar el ejercicio.
Ejercicio 9. Cifrado César
Implementa un cifrado César simple: pide al usuario una palabra (solo en minúsculas, sin espacios) y un desplazamiento (número entero). A partir de esos datos, construye la palabra cifrada desplazando cada letra ese número de posiciones en el alfabeto.
Por ejemplo, con desplazamiento 3, "abc" se convierte en "def".
Si te pasas del final del alfabeto, vuelve a empezar por la "a". Usa el operador % para conseguirlo. Por ejemplo, con desplazamiento 1, "zas" se convierte en "abt".
Parte de alfabeto = "abcdefghijklmnopqrstuvwxyz", usa find() para averiguar la posición de cada letra en el alfabeto, y ve construyendo la palabra cifrada carácter a carácter con una asignación aumentada (+=).
💾 Haz un commit al terminar el ejercicio.
Ejercicio 10. Letra del DNI
Pide al usuario los 8 dígitos numéricos de un DNI (como un único número entero) y calcula su letra correspondiente aplicando el algoritmo oficial: calcula el resto de dividir el número entre 23 y usa ese resto como índice para buscar la letra correspondiente dentro de la cadena "TRWAGMYFPDXBNJZSQVHLCKE". Muestra el DNI completo (número + letra) con un f-string.
💾 Haz un commit al terminar el ejercicio.
Al terminar los ejercicios, debes tener claro los siguientes conceptos:
- Las cadenas como secuencia de caracteres, y su inmutabilidad
- Indexación (positiva y negativa)
- Slicing (segmentación), incluido el paso negativo para invertir una cadena
len()aplicado a cadenas- Comparación de cadenas (
==,<,>) - Operador
inpara comprobar si una subcadena aparece dentro de otra - Recorrer una cadena con
for - Métodos de transformación:
upper(),lower(),capitalize(),title() - Métodos de limpieza:
strip(),lstrip(),rstrip() - Búsqueda y sustitución:
find(),replace() - División de una cadena en una lista de subcadenas:
split() - Comprobación de sufijo:
endswith() - Construcción de una cadena nueva dentro de un bucle, con asignación aumentada (
+=)