Last active
February 8, 2024 02:22
-
-
Save lokilloboss/2ff7a7cb21fb5eedba2958f00b4a201d to your computer and use it in GitHub Desktop.
Reto dia 3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
# Función para generar ID único | |
def generate_id(): | |
global id_counter | |
id_counter += 1 | |
return id_counter | |
# Variable global para almacenar ids | |
ids_usuarios = [] | |
def registrar_usuario(nombre, apellidos, telefono, correo, id_usuario): | |
# Validar nombre | |
if not validar_nombre(nombre): | |
print(f"Error: El nombre no es válido.") | |
return False | |
# Validar apellidos | |
if not validar_apellidos(apellidos): | |
print(f"Error: Los apellidos no son válidos.") | |
return False | |
# Validar telefono | |
if not validar_telefono(telefono): | |
print(f"Error: El número de teléfono no es válido.") | |
return False | |
# Validar correo | |
if not validar_correo(correo): | |
print(f"Error: El correo electrónico no es válido.") | |
return False | |
# Imprimir información del usuario | |
print(f"Usuario registrado: {nombre} {apellidos}") | |
print(f"ID: {id_usuario}") | |
print(f"Teléfono: {telefono}") | |
print(f"Correo electrónico: {correo}") | |
# Registrar id en la lista | |
ids_usuarios.append(id_usuario) | |
return True | |
def validar_nombre(nombre): | |
# Expresión regular que coincide con cualquier letra (mayúscula o minúscula) | |
patron = re.compile(r'^[a-zA-Záéíóúñ]+$') | |
if not patron.match(nombre): # Valida si el nombre coincide con la expresión regular | |
print(f"Error: El nombre solo debe contener letras.") | |
return False | |
if len(nombre) < 5 or len(nombre) > 50: | |
print(f"Error: El nombre debe tener entre 5 y 50 caracteres.") | |
return False | |
return True # Si el nombre es válido, retorna True | |
def validar_apellidos(apellidos): | |
if len(apellidos) < 5 or len(apellidos) > 50: | |
print(f"Error: Los apellidos deben tener entre 5 y 50 caracteres.") | |
return False | |
return True | |
def validar_telefono(telefono): | |
# Validar longitud de telefono | |
if len(telefono) != 10: | |
print(f"Error: El número de teléfono debe tener 10 dígitos.") | |
return False | |
# Validar que sean números | |
patron = re.compile(r'^[0-9]+$') | |
if not patron.match(telefono): | |
print(f"Error: El número de teléfono solo debe contener números.") | |
return False | |
return True | |
def validar_correo(correo): | |
if len(correo) < 5 or len(correo) > 50: | |
print(f"Error: El correo electrónico debe tener entre 5 y 50 caracteres.") | |
return False | |
# Validar formato de correo electrónico | |
patron = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$') | |
if not patron.match(correo): | |
print(f"Error: El correo electrónico no tiene un formato válido.") | |
return False | |
return True | |
def main(): | |
""" | |
Función principal que registra N nuevos usuarios. | |
""" | |
# Preguntar cuántos usuarios se quieren registrar | |
numero_usuarios = int(input("¿Cuántos usuarios desea registrar?: ")) | |
# Initialize id_counter outside functions | |
global id_counter | |
id_counter = 0 | |
# Registrar cada usuario | |
for i in range(numero_usuarios): | |
nombre = input(f"Ingrese el nombre del usuario {i + 1}: ") | |
apellidos = input(f"Ingrese los apellidos del usuario {i + 1}: ") | |
telefono = input(f"Ingrese el número de teléfono del usuario {i + 1}: ") | |
correo = input(f"Ingrese el correo electrónico del usuario {i + 1}: ") | |
# Registrar el usuario solo si la información es válida | |
if registrar_usuario(nombre, apellidos, telefono, correo, generate_id()): | |
print("-" * 20) | |
# Imprimir lista de ids | |
print("**Lista de IDs de usuarios registrados:**") | |
for id in ids_usuarios: | |
print(f"- {id}") | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment