Boletín 206. Cadenas
Aunque durante las tareas anteriores estuvimos utilizando el tipo de datos str tan solo utilizamos una pequeña parte de su potencial. En los siguientes ejercicios profundizaremos en este tipo de datos.
Revisa el apartado Cadenas de la unidad.
Ejercicios
- Para cada función, realiza su documentación utilizando DocString.
- Captura todas las excepciones que puedan ocurrir durante el transcurso del script.
Ejercicio 1. Escribe un script en Python que cuente el número de vocales en una cadena de texto introducida por teclado. Por último imprimirá por pantalla el número de vocales. Recuerda contar tanto las mayúsculas como las minúsculas.
Ejercicio 2. Escribe un script en Python que determine si una cadena de texto introducida por teclado es un palíndromo. Un palíndromo es una palabra o frase que se lee de la misma manera de izquierda a derecha que de derecha a izquierda, ignorando espacios y mayúsculas. Si es palíndromo mostrará por pantalla Es palíndromo y si no lo es No es palíndromo.
Ejercicio 3. Escribe un script en Python que elimine todas las consonantes de una cadena de texto introducida por teclado y devuelva una nueva cadena solo con las vocales y otros caracteres. Muestra este texto por pantalla.
Ejercicio 4. Escribe un script en Python que cuente el número de palabras en una cadena de texto introducida por teclado y lo muestre por pantalla. Considera que las palabras están separadas por uno o más espacios. Cuidado con los dobles, triples o más espacios y con los espacios al comienzo y al final del texto.
Ejercicio 5. El cifrado César es un tipo de cifrado de sustitución en el que una letra del texto original es sustituida por otra letra que está un número fijo de posiciones posteriores en el alfabeto.
Por ejemplo, si el desplazamiento es 5, la a se cifrará con la f. Se deben ignorar los espacios en blanco.
Si en un desplazamiento se terminan las letras, se volverá a comenzar por el inicio del alfabeto.
Suponer que todos los nombres están en minúsculas y están compuestos solo por las siguientes letras: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z.
Realiza la implementación de este algoritmo en la función cifra_cesar(texto: str, desplazamiento: int): str. Recuerda que los caracteres diferentes a las letras se deben mantener. Lanza las excepciones TypeError y ValueError cuando sea necesario.
El propio script debe utilizar dicha función para cifrar un texto introducido por el usuario y mostrar el texto cifrado por pantalla. El usuario también indicará por teclado el desplazamiento. Además recuerda capturar la excepción.
Ejercicio 6. Realiza la implementación de la función descifra_cesar(texto: str, desplazamiento: int): str en un script en Python que descifre una cadena cifrada con cifrado César. Lanza las excepciones TypeError y ValueError cuando sea necesario.
El propio script debe utilizar dicha función para descifrar un texto introducido por el usuario y mostrar el texto descifrado por pantalla. El usuario también indicará por teclado el desplazamiento.
Ejercicio 7. Un número de DNI tiene el siguiente formato 00000000A.
Escribe un script en Python que le pida al usuario su DNI y compruebe que sea correcto. Para ello sigue los siguientes pasos:
- Comprueba la longitud de la cadena.
- Comprueba que los 8 primeros dígitos son números y el último es una letra mayúscula. PISTA: utiliza la tabla del código ASCII.
- Comprueba que la letra introducida es el código de control del DNI.
Por último imprime Válido o Inválido según corresponda.
Ejercicio 8. Queremos realizar un programa que calcule el índice de una clave para un diccionario utilizando el algoritmo de hashing por folding. El programa recibirá en orden los siguientes parámetros: tamaño de la tabla, tamaño de división por folding y la correspondiente clave.