Skip to content

Instantly share code, notes, and snippets.

@TinchoBus
Last active February 13, 2024 01:03
Show Gist options
  • Save TinchoBus/4912e53b72e4a79a0aa2e35306887f75 to your computer and use it in GitHub Desktop.
Save TinchoBus/4912e53b72e4a79a0aa2e35306887f75 to your computer and use it in GitHub Desktop.
Reto N°5
class Usuario:
contador_usuarios = 0
def __init__(self, nombre, apellidos, telefono, email):
Usuario.contador_usuarios += 1
self.id_usuario = Usuario.contador_usuarios
self.nombre = nombre
self.apellidos = apellidos
self.telefono = telefono
self.email = email
def __str__(self):
return f"ID: {self.id_usuario}, Nombre: {self.nombre}, Apellidos: {self.apellidos}, Teléfono: {self.telefono}, Email: {self.email}"
class RegistroUsuarios:
def __init__(self):
self.usuarios = []
def agregar_usuario(self, usuario_dict):
nuevo_usuario = Usuario(**usuario_dict)
self.usuarios.append(nuevo_usuario)
print(f"Usuario registrado exitosamente: {nuevo_usuario}")
def mostrar_usuario(self, id_usuario):
usuario = self.obtener_usuario_por_id(id_usuario)
if usuario:
print(usuario)
else:
print("Usuario no encontrado.")
def editar_usuario(self, id_usuario, nuevo_usuario_dict):
usuario = self.obtener_usuario_por_id(id_usuario)
if usuario:
usuario.nombre = nuevo_usuario_dict['nombre']
usuario.apellidos = nuevo_usuario_dict['apellidos']
usuario.telefono = nuevo_usuario_dict['telefono']
usuario.email = nuevo_usuario_dict['email']
print("Usuario editado exitosamente.")
else:
print("Usuario no encontrado.")
def eliminar_usuario(self, id_usuario):
usuario = self.obtener_usuario_por_id(id_usuario)
if usuario:
self.usuarios.remove(usuario)
print("Usuario eliminado exitosamente.")
else:
print("Usuario no encontrado.")
def listar_usuarios(self):
print("Listado de usuarios registrados:")
for usuario in self.usuarios:
print(usuario)
def listar_ids(self):
print("IDs de usuarios registrados:")
for usuario in self.usuarios:
print(usuario.id_usuario)
def obtener_usuario_por_id(self, id_usuario):
for usuario in self.usuarios:
if usuario.id_usuario == id_usuario:
return usuario
return None
def validar_nombre(nombre):
return 5 <= len(nombre) <= 50
def validar_apellidos(apellidos):
return 5 <= len(apellidos) <= 50
def validar_telefono(telefono):
return len(telefono) == 10 and telefono.isdigit()
def validar_email(email):
return 5 <= len(email) <= 50 and '@' in email and '.' in email
def new_user(registro):
usuario_dict = {}
nombre = input("Ingrese el nombre del usuario: ")
while not validar_nombre(nombre):
print("Error: El nombre debe tener entre 5 y 50 caracteres.")
nombre = input("Ingrese el nombre del usuario: ")
usuario_dict['nombre'] = nombre
apellidos = input("Ingrese los apellidos del usuario: ")
while not validar_apellidos(apellidos):
print("Error: Los apellidos deben tener entre 5 y 50 caracteres.")
apellidos = input("Ingrese los apellidos del usuario: ")
usuario_dict['apellidos'] = apellidos
telefono = input("Ingrese el número de teléfono del usuario: ")
while not validar_telefono(telefono):
print("Error: El número de teléfono debe tener 10 dígitos numéricos.")
telefono = input("Ingrese el número de teléfono del usuario: ")
usuario_dict['telefono'] = telefono
email = input("Ingrese el correo electrónico del usuario: ")
while not validar_email(email):
print("Error: El correo electrónico debe tener entre 5 y 50 caracteres y ser válido.")
email = input("Ingrese el correo electrónico del usuario: ")
usuario_dict['email'] = email
registro.agregar_usuario(usuario_dict)
def show_user(registro):
id_usuario = int(input("Ingrese el ID del usuario que desea consultar: "))
registro.mostrar_usuario(id_usuario)
def edit_user(registro):
id_usuario = int(input("Ingrese el ID del usuario que desea editar: "))
usuario = registro.obtener_usuario_por_id(id_usuario)
if usuario:
usuario_dict = {}
nombre = input("Ingrese el nuevo nombre del usuario: ")
while not validar_nombre(nombre):
print("Error: El nombre debe tener entre 5 y 50 caracteres.")
nombre = input("Ingrese el nuevo nombre del usuario: ")
usuario_dict['nombre'] = nombre
apellidos = input("Ingrese los nuevos apellidos del usuario: ")
while not validar_apellidos(apellidos):
print("Error: Los apellidos deben tener entre 5 y 50 caracteres.")
apellidos = input("Ingrese los nuevos apellidos del usuario: ")
usuario_dict['apellidos'] = apellidos
telefono = input("Ingrese el nuevo número de teléfono del usuario: ")
while not validar_telefono(telefono):
print("Error: El número de teléfono debe tener 10 dígitos numéricos.")
telefono = input("Ingrese el nuevo número de teléfono del usuario: ")
usuario_dict['telefono'] = telefono
email = input("Ingrese el nuevo correo electrónico del usuario: ")
while not validar_email(email):
print("Error: El correo electrónico debe tener entre 5 y 50 caracteres y ser válido.")
email = input("Ingrese el nuevo correo electrónico del usuario: ")
usuario_dict['email'] = email
registro.editar_usuario(id_usuario, usuario_dict)
else:
print("Usuario no encontrado.")
def delete_user(registro):
id_usuario = int(input("Ingrese el ID del usuario que desea eliminar: "))
registro.eliminar_usuario(id_usuario)
def list_users(registro):
registro.listar_usuarios()
def menu():
print("\n--- Menú ---")
print("A. Registrar nuevo usuario")
print("B. Listar IDs de usuarios")
print("C. Ver información de usuario por ID")
print("D. Editar información de usuario por ID")
print("E. Eliminar usuario por ID")
print("F. Listar usuarios")
print("G. Salir")
if __name__ == "__main__":
registro = RegistroUsuarios()
opciones = {
'A': new_user,
'B': RegistroUsuarios.listar_ids,
'C': show_user,
'D': edit_user,
'E': delete_user,
'F': list_users,
'G': lambda _: print("Saliendo del programa...")
}
while True:
menu()
opcion = input("Seleccione una opción (A/B/C/D/E/F/G): ").upper()
if opcion in opciones:
opciones[opcion](registro)
else:
print("Opción no válida. Por favor, seleccione una opción válida.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment