Saltar al contenido principal

Bloque 110. Cadenas de texto

Contenidos

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 for y comprueba si algún carácter está en "0123456789" con el operador in. 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.

Repaso

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 in para 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 (+=)