1 usuario conectado

Validar teléfono español. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada validar_telefono_es que tome una cadena de texto como entrada y devuelva True si la cadena parece ser un número de teléfono válido en España (comenzando con '6', '7', '8' o '9' y seguido de 8 dígitos), y False en caso contrario. La función debe ignorar espacios y guiones en la validación.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Validar teléfono español

📋 Copiar código


import re

def validar_telefono_es(telefono):
  """
  Valida si una cadena de texto parece ser un número de teléfono válido en España.

  Args:
    telefono: La cadena de texto a validar.

  Returns:
    True si parece ser un número de teléfono español válido, False en caso contrario.
  """
  telefono_limpio = re.sub(r'[\s-]', '', telefono)  # Elimina espacios y guiones
  patron = re.compile(r'^[6789]\d{8}$')
  return bool(patron.match(telefono_limpio))

# Ejemplos de uso
telefono1 = "612345678"
resultado1 = validar_telefono_es(telefono1)
print(f"'{telefono1}' es un teléfono español válido: {resultado1}")

telefono2 = "799988877"
resultado2 = validar_telefono_es(telefono2)
print(f"'{telefono2}' es un teléfono español válido: {resultado2}")

telefono3 = "900112233"
resultado3 = validar_telefono_es(telefono3)
print(f"'{telefono3}' es un teléfono español válido: {resultado3}")

telefono4 = "8-123-456-78"
resultado4 = validar_telefono_es(telefono4)
print(f"'{telefono4}' es un teléfono español válido: {resultado4}")

telefono5 = "612 345 678"
resultado5 = validar_telefono_es(telefono5)
print(f"'{telefono5}' es un teléfono español válido: {resultado5}")

telefono6 = "512345678"
resultado6 = validar_telefono_es(telefono6)
print(f"'{telefono6}' es un teléfono español válido: {resultado6}")

telefono7 = "6123456789"
resultado7 = validar_telefono_es(telefono7)
print(f"'{telefono7}' es un teléfono español válido: {resultado7}")

telefono8 = "Hola"
resultado8 = validar_telefono_es(telefono8)
print(f"'{telefono8}' es un teléfono español válido: {resultado8}")

telefono9 = ""
resultado9 = validar_telefono_es(telefono9)
print(f"'' es un teléfono español válido: {resultado9}")

 

Explicación del Código:

  1. Importa el módulo re: Se utiliza para trabajar con expresiones regulares.

  2. Función validar_telefono_es(telefono):

    • telefono_limpio = re.sub(r'[\s-]', '', telefono): Elimina todos los espacios en blanco (\s) y los guiones (-) de la cadena de teléfono para normalizarla antes de la validación.
    • patron = re.compile(r'^[6789]\d{8}$'): Compila una expresión regular para verificar el formato del número de teléfono:
      • ^: Coincide con el inicio de la cadena.
      • [6789]: Coincide con un dígito que sea 6, 7, 8 o 9 (los prefijos comunes de teléfonos móviles y algunos fijos en España).
      • \d{8}: Coincide con exactamente 8 dígitos (0-9).
      • $: Coincide con el final de la cadena.
    • return bool(patron.match(telefono_limpio)): Intenta hacer coincidir el patrón con la cadena de teléfono limpia desde el principio. Devuelve True si la cadena completa coincide con el patrón (es decir, comienza con 6, 7, 8 o 9 y tiene exactamente 9 dígitos en total después de eliminar espacios y guiones), y False en caso contrario.

Ejemplos de Uso:

Los ejemplos muestran cómo la función valida diferentes cadenas para determinar si parecen ser números de teléfono españoles válidos según el formato especificado. Se incluyen casos con y sin espacios/guiones, números válidos e inválidos según la longitud y el prefijo.