Aplicando los conocimientos adquiridos en el curso de «Fundamentos de Python», específicamente de los temas: Variables, Condicionales, Ciclos y Listas, usando las funciones de Manipulación de Cadenas de Texto, se plantea este manual en que se pretende utilizar la mayor cantidad de funciones «string» posibles.
Un reto, después de terminar la práctica, sería compactar aún mas el algoritmo sin usar expresiones regulares y manteniendolo comprensible, es decir, sin ofuscar mucho el código
**Funcionalidad: **Este programa solicita al usuario que ingrese un correo electrónico (e-mail) y realiza todas las validaciones posibles para determinar si este es correcto o no. Si el correo electrónico es correcto lo indicará y si tiene errores especificará cual es.
# RRCP (01/SEP/2023): Validador de Cadenas Entrada. Caso de uso correos electronicos.# NOTA: Practica para fines de entrenamiento del lenguaje, la intensión es# usar la mayor cantidad de funciones de cadena posibles.# TEMAS: Variables, Condicionales, Ciclos, Litas, Manipulacion de Cadenas# RETO: Compactar aun mas el algoritmo sin usar expresiones regulares y manteniendolo comprensible,# es decir, sin ofuscar mucho el codigo.
import sys
vs_mail = ''
vs_mail_name = ""
vs_mail_domain = ""
vs_mail_sub_domain = ""
vs_pos_arroba = 0
vs_pos_primer_punto_dominio = 0
lst_excep_name = ('.','_','-') # Lista de caracteres especiales en el nombre.
vb_flag_salir = Falseprint('-------------------------------------')
print('-- VALIDADOR DE CADENAS DE ENTRADA --')
print('- CASO DE USO: CORREOS ELECTRONICOS -')
print('------------------------------------- \n')
vs_mail = input("Ingresa un e-mail: ")
if (len(vs_mail) < 5) : # Longitud > 64 caracteres.print("Error: La longitud del e-mail es menor de lo congruente.")
sys.exit()
elif (len(vs_mail) > 64) : # Longitud > 64 caracteres.print("Error: La longitud del e-mail debe de ser menor o igual a 64 caracteres")
sys.exit()
elif (vs_mail.isspace()) : # Tiene espacios en blanco. print("Error: El e-mail no debe de tener espacios en blanco.")
sys.exit()
elif (vs_mail.count('@') != 1): # Debe de contener una arroba.print("Error: El e-mail debe de contener una arroba @.")
sys.exit()
else:
vs_pos_arroba = vs_mail.find("@")
vs_mail_name = vs_mail[0:vs_pos_arroba]
vs_mail_domain = vs_mail[vs_pos_arroba + 1: len(vs_mail)]
vs_pos_primer_punto_dominio = vs_mail_domain.find(".")
vs_mail_sub_domain = vs_mail_domain[vs_pos_primer_punto_dominio + 1: len(vs_mail_domain)]
# Validaciones en el nombre del correo. ------if ( not vs_mail_name[0].isalpha()): #Debe iniciar con una letra.print("Error: El e-mail debe debe iniciar con una letra.")
sys.exit()
else:
# Se recorre todo el nombre del correo para encontrar carteres especiales no permitidos.for vs_char in vs_mail_name:
if(not vs_char.isalpha() andnot vs_char.isdigit() and vs_char notin lst_excep_name):
print("Error: En el nombre del e-mail, el caracter ", vs_char , " no es permitido.")
vb_flag_salir = Trueif(vb_flag_salir == True): # Se encontraron caracteres invalidos en el nombre.
sys.exit()
# Validaciones del dominio del correo. ------if(len(vs_mail_domain) < 3):
print("Error: La longitud del dominio es menor de lo congruente.")
sys.exit()
elif (vs_mail_domain.count('.') < 1or vs_mail_domain.count('.') > 2):
print("Error: La especificacion del dominio es incorrecta. No tiene subdominio o tiene mas subdonimios de los permitidos.")
sys.exit()
else:
# Se recorre todo el dominio del correo para encontrar carteres especiales no permitidos.for vs_char in vs_mail_domain:
if(not vs_char.isalpha() andnot vs_char.isdigit() and vs_char notin lst_excep_name):
print("Error: En el dominio del e-mail, el caracter ", vs_char , " no es permitido.")
vb_flag_salir = Trueif(vb_flag_salir == True): # Se encontraron caracteres invalidos en el nombre.
sys.exit()
# Validaciones del subdominio. ------if(len(vs_mail_sub_domain) < 1):
print("Error: La longitud del subdnominio es menor de lo congruente.")
sys.exit()
print("¡El correo electrinico ingresado es valido! > ", vs_mail)