def analizador_de_texto(): print("=== BIENVENIDO AL ANALIZADOR DE TEXTO ===") # ------------------------------------------------------------------------- # [VALIDACIÓN DE DATOS] y [CICLO WHILE] # Pide al usuario una palabra o frase válida y no vacía. # ------------------------------------------------------------------------- while True: # [MÉTODOS DE CADENAS]: .strip() elimina espacios vacíos al inicio y final texto = input("Por favor, ingresa una palabra o frase: ").strip() if texto: # Valida que la cadena contenga caracteres break print("Error: El texto no puede estar vacío. Inténtalo de nuevo.\n") # ------------------------------------------------------------------------- # [MENÚS INTERACTIVOS] y [CICLO WHILE] con 'while True + break' # Mantiene el menú activo hasta que el usuario decida salir explícitamente. # ------------------------------------------------------------------------- while True: print("\n" + "="*40) print(" MENÚ DE OPCIONES") print("="*40) print("1. Contar vocales") print("2. Contar consonantes") print("3. Mostrar las primeras 3 letras (slicing)") print("4. Mostrar las últimas 3 letras (slicing)") print("5. Convertir a mayúsculas o minúsculas") print("6. Ver inicial y longitud (indexación)") print("7. Salir") print("="*40) opcion = input("Selecciona una opción (1-7): ").strip() print("-" * 40) # --- Opción 1: Contar vocales --- if opcion == "1": vocales = "aeiouáéíóúü" contador_vocales = 0 # [MÉTODOS DE CADENAS]: .lower() para estandarizar el texto a minúsculas texto_min = texto.lower() # [CICLO FOR]: Recorre el texto carácter por carácter for letra in texto_min: if letra in vocales: contador_vocales += 1 print(f"El texto contiene {contador_vocales} vocal(es).") # --- Opción 2: Contar consonantes --- elif opcion == "2": consonantes = "bcdfghjklmnñpqrstvwxyz" contador_consonantes = 0 texto_min = texto.lower() # [CICLO FOR]: Recorre las letras para identificar consonantes for letra in texto_min: if letra in consonantes: contador_consonantes += 1 print(f"El texto contiene {contador_consonantes} consonante(s).") # --- Opción 3: Primeras 3 letras --- elif opcion == "3": # [MÉTODOS DE CADENAS]: .replace() para quitar espacios y medir solo letras limpias texto_sin_espacios = texto.replace(" ", "") # [INDEXACIÓN Y SLICING]: Slicing desde el inicio hasta el índice 3 primeras_tres = texto_sin_espacios[:3] print(f"Las primeras 3 letras (sin espacios) son: '{primeras_tres}'") # --- Opción 4: Últimas 3 letras --- elif opcion == "4": texto_sin_espacios = texto.replace(" ", "") # [INDEXACIÓN Y SLICING]: Slicing usando índice negativo ultimas_tres = texto_sin_espacios[-3:] print(f"Las últimas 3 letras (sin espacios) son: '{ultimas_tres}'") # --- Opción 5: Convertir mayúsculas/minúsculas --- elif opcion == "5": print("a. Convertir a MAYÚSCULAS") print("b. Convertir a minúsculas") sub_opcion = input("Elige 'a' o 'b': ").strip().lower() # [MÉTODOS DE CADENAS]: Uso de .upper() y .lower() if sub_opcion == "a": print(f"Resultado: {texto.upper()}") elif sub_opcion == "b": print(f"Resultado: {texto.lower()}") else: print("Opción no válida.") # --- Opción 6: Indexación explícita --- elif opcion == "6": # [INDEXACIÓN Y SLICING]: Acceso directo a una posición específica [0] primera_letra = texto[0] print(f"La primera letra real de tu texto es: '{primera_letra}'") print(f"La longitud total (con espacios) es de {len(texto)} caracteres.") # --- Opción 7: Salir del programa --- elif opcion == "7": print("¡Gracias por usar el Analizador de Texto! Hasta luego.") break # [CICLO WHILE]: break para romper el bucle infinito de manera limpia else: print("Opción no válida. Por favor, elige un número del 1 al 7.") # Ejecutar la aplicación if __name__ == "__main__": analizador_de_texto()