Created
February 9, 2024 03:28
-
-
Save cibervicho/8fbe93307144fd43477fbcfe426413eb to your computer and use it in GitHub Desktop.
Reto 4, día Miercoles (8-Feb-2024)
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
# Reto 4, día Miercoles (8-Feb-2024) | |
# ============================== | |
# | |
# Ya nos encontramos en la recta final de nuestra semana, y lo que haremos ahora, cómo ya | |
# es costumbre, será añadir más funcionalidades a nuestro programa. | |
# | |
# Puntualmente 4 nuevas funcionalidades. Aquí van. | |
# | |
# 1.- Ahora todos los valores que representan a un usuario: Nombre, apellidos, número de | |
# teléfono y correo electrónico deberán almacenarse en un diccionario. | |
# | |
# 2.- Se añadirá la opción de poder listar el ID de todos los usuarios registrados hasta el | |
# momento. | |
# | |
# 3.- Se añadirá la opción de poder ver la información de un usuario con respecto a un ID. | |
# Es decir, el usuario podrá ingresar un ID y a partir de este conocer la información | |
# registrada. | |
# | |
# 4.- Se añadirá la opción de poder editar la información de un usuario con respecto a un ID. | |
# Es decir, el usuario podrá ingresar un ID y a partir de este el programa pedirá | |
# nuevamente los valores de un registro para actualizarlos. | |
# | |
# Estas 3 nuevas opciones deberán ser presentadas al usuario al comienzo del programa, esto | |
# con la finalidad que sea el usuario quien defina que quiere hacer justo ahora: añadir nuevos | |
# usuario, consultarlos o editarlos. | |
# | |
# De igual forma el programa tendrán una quinta opción que le permita la usuario finalizar el | |
# programa cuando él lo desee. | |
# | |
# Un Tip. Para estas nuevas opciones puedes presentarle a tu usuario un pequeño menú del cual | |
# pueda elegir. Por ejemplo opción A.-) registrar nuevos usuarios, opción B.-) listar | |
# usuarios, Opción C.-) Editar usuarios y así sucesivamente. | |
import os | |
MENU = [ | |
" LISTADO DE OPCIONES", | |
" -------------------\n", | |
" 1. Listar usuarios", | |
" 2. [C] Agregar usuario", | |
" 3. [R] Ver informacion de usuarios", | |
" 4. [U] Editar usuarios", | |
" 5. [D] Eliminar usuarios", | |
" 9. Salir del programa\n", | |
"\n Elige una opcion:", | |
] | |
INSTRUCCIONES = [ | |
"\nINSTRUCCIONES:", | |
" 1. longitud de nombre, apellidos e email deben ser entre 5 y 50 caracteres", | |
" 2. longitud de telefono deben ser igual a 10 digitos\n" | |
] | |
OPCIONES_HABILITADAS = ('1', '2', '3', '4', '5', '9') | |
CAMPOS_DE_USUARIO = ("NOMBRE", "APELLIDO", "TELEFONO", "EMAIL") | |
# Diccionario principal donde vamos a almacenar los usuarios registrados | |
# { | |
# usuario_id #1: { | |
# 'nombre': str, | |
# 'apellido': str, | |
# 'telefono': str, | |
# 'email': str, | |
# }, | |
# . | |
# . | |
# . | |
# usuario_id #N: { | |
# 'nombre': str, | |
# 'apellido': str, | |
# 'telefono': str, | |
# 'email': str, | |
# }, | |
# } | |
usuarios_dict = {} | |
# Lista de todos los IDs de los usuarios registrados | |
usuarios_id_list = [] | |
opcion = 0 | |
while opcion != '9': | |
os.system('clear') | |
usuarios_registrados = len(usuarios_dict) | |
print("Usuarios registrados:", str(usuarios_registrados), "\n") | |
# Mostramos las opciones del menu | |
for item in MENU: | |
print(item) | |
# Evaluamos la opcion elegida | |
opcion = str(input("> ")) | |
if opcion not in OPCIONES_HABILITADAS: | |
print("\n -> OPCION [" + opcion + "] NO RECONOCIDA!\n") | |
else: | |
match opcion: | |
case '1': # Listar usuarios | |
print("\n", MENU[2].upper(), "\n") | |
if len(usuarios_dict): | |
for id in usuarios_id_list: | |
nombre = usuarios_dict[id]['nombre'] + " " + usuarios_dict[id]['apellido'] | |
telefono = usuarios_dict[id]['telefono'] | |
email = usuarios_dict[id]['email'] | |
print(" Id:", id) | |
print(" Nombre:", nombre) | |
print(" Telefono:", telefono) | |
print(" Email:", email) | |
print("") | |
print("") | |
else: | |
print(" -> NO SE HAN REGISTRADO USUARIOS!\n") | |
case '2': # Agregar usuario | |
print("\n", MENU[3].upper(), "\n") | |
# Mostramos las instrucciones/restricciones | |
for instruccion in INSTRUCCIONES: | |
print(instruccion) | |
# Iniciamos captura y validacion de usuario | |
print("Usuario #" + str(usuarios_registrados + 1) + ":") | |
nombre, apellido, telefono, email = "", "", "", "" | |
while len(nombre) < 5 or len(nombre) > 50: | |
nombre = input("Ingresa el/los nombre(s) del usuario #" + str(usuarios_registrados + 1) + ": ") | |
if len(nombre) < 5 or len(nombre) > 50: | |
print(" -> ERROR: El nombre debe ser de una longitud minima de 5 y maxima de 50.") | |
print(" Longitud actual: " + str(len(nombre)) +". Intenta nuevamente.") | |
while len(apellido) < 5 or len(apellido) > 50: | |
apellido = input("Ingresa los apellidos del usuario #" + str(usuarios_registrados + 1) + ": ") | |
if len(apellido) < 5 or len(apellido) > 50: | |
print(" -> ERROR: El apellido debe ser de una longitud minima de 5 y maxima de 50.") | |
print(" Longitud actual: " + str(len(apellido)) +". Intenta nuevamente.") | |
while len(telefono) != 10: | |
telefono = str(input("Ingresa el telefono a 10 digitos del usuario #" + str(usuarios_registrados + 1) + ": ")) | |
if len(telefono) != 10: | |
print(" -> ERROR: El telefono debe ser de 10 digitos exactamente") | |
print(" Numero de digitos actual: " + str(len(telefono)) +". Intenta nuevamente.") | |
while len(email) < 5 or len(email) > 50: | |
email = input("ingresa el correo electronico del usuario #" + str(usuarios_registrados + 1) + ": ") | |
if len(email) < 5 or len(email) > 50: | |
print(" -> ERROR: El email debe ser de una longitud minima de 5 y maxima de 50.") | |
print(" Longitud actual: " + str(len(email)) +". Intenta nuevamente.") | |
usuario_id = len(usuarios_dict) + 1 | |
usuarios_id_list.append(usuario_id) | |
usuarios_dict.update( | |
{ | |
usuario_id: { | |
'nombre': nombre, | |
'apellido': apellido, | |
'telefono': telefono, | |
'email': email | |
} | |
} | |
) | |
print("\n --> Hola " + nombre + " " + apellido + ", en breve recibiras un correo a: " + email + "\n") | |
case '3': # Ver informacion de usuarios | |
print("\n", MENU[4].upper(), "\n") | |
if len(usuarios_dict): | |
id = input("Selecciona el ID del usuario: ") | |
if not id.isdigit(): | |
print("\n -> ID DE USUARIO [" + id + "] INVALIDO!\n") | |
else: | |
id = int(id) | |
if id not in usuarios_id_list: | |
print("\n -> ID DE USUARIO [" + str(id) + "] NO ENCONTRADO!\n") | |
else: | |
nombre = usuarios_dict[id]['nombre'] + " " + usuarios_dict[id]['apellido'] | |
telefono = usuarios_dict[id]['telefono'] | |
email = usuarios_dict[id]['email'] | |
print("") | |
print(" Id:", id) | |
print(" Nombre:", nombre) | |
print(" Telefono:", telefono) | |
print(" Email:", email) | |
print("") | |
else: | |
print(" -> NO SE HAN REGISTRADO USUARIOS!\n") | |
case '4': # Editar usuarios | |
print("\n", MENU[5].upper(), "\n") | |
if len(usuarios_dict): | |
id = input("Selecciona el ID del usuario a editar: ") | |
if not id.isdigit(): | |
print("\n -> ID DE USUARIO [" + id + "] INVALIDO!\n") | |
else: | |
id = int(id) | |
if id not in usuarios_id_list: | |
print("\n -> ID DE USUARIO [" + str(id) + "] NO ENCONTRADO!\n") | |
else: | |
nombre = usuarios_dict[id]['nombre'] + " " + usuarios_dict[id]['apellido'] | |
telefono = usuarios_dict[id]['telefono'] | |
email = usuarios_dict[id]['email'] | |
print("") | |
print(" Nombre:", nombre) | |
print(" Telefono:", telefono) | |
print(" Email:", email) | |
print("") | |
campo = input("Que campo del usuario deseas editar " + str(CAMPOS_DE_USUARIO) + "?: ") | |
campo = campo.upper() | |
if campo not in CAMPOS_DE_USUARIO: | |
print("\n -> CAMPO [" + campo + "] INVALIDO!") | |
print(" Opciones:", CAMPOS_DE_USUARIO, "\n") | |
else: | |
nombre, apellido, telefono, email = "", "", "", "" | |
if campo.lower() == "nombre": | |
while len(nombre) < 5 or len(nombre) > 50: | |
nombre = input("Ingresa el/los nombre(s) del usuario #" + str(id) + ": ") | |
if len(nombre) < 5 or len(nombre) > 50: | |
print(" -> ERROR: El nombre debe ser de una longitud minima de 5 y maxima de 50.") | |
print(" Longitud actual: " + str(len(nombre)) +". Intenta nuevamente.") | |
usuarios_dict[id]['nombre'] = nombre | |
elif campo.lower() == "apellido": | |
while len(apellido) < 5 or len(apellido) > 50: | |
apellido = input("Ingresa los apellidos del usuario #" + str(id) + ": ") | |
if len(apellido) < 5 or len(apellido) > 50: | |
print(" -> ERROR: El apellido debe ser de una longitud minima de 5 y maxima de 50.") | |
print(" Longitud actual: " + str(len(apellido)) +". Intenta nuevamente.") | |
usuarios_dict[id]['apellido'] = apellido | |
elif campo.lower() == "telefono": | |
while len(telefono) != 10: | |
telefono = str(input("Ingresa el telefono a 10 digitos del usuario #" + str(id) + ": ")) | |
if len(telefono) != 10: | |
print(" -> ERROR: El telefono debe ser de 10 digitos exactamente") | |
print(" Numero de digitos actual: " + str(len(telefono)) +". Intenta nuevamente.") | |
usuarios_dict[id]['telefono'] = telefono | |
elif campo.lower() == "email": | |
while len(email) < 5 or len(email) > 50: | |
email = input("ingresa el correo electronico del usuario #" + str(id) + ": ") | |
if len(email) < 5 or len(email) > 50: | |
print(" -> ERROR: El email debe ser de una longitud minima de 5 y maxima de 50.") | |
print(" Longitud actual: " + str(len(email)) +". Intenta nuevamente.") | |
usuarios_dict[id]['email'] = email | |
else: | |
print("\n -> CAMPO [" + campo + "] INVALIDO!") | |
print(" Opciones:", CAMPOS_DE_USUARIO) | |
print("") | |
else: | |
print(" -> NO SE HAN REGISTRADO USUARIOS!\n") | |
case '5': # Eliminar usuarios | |
print("\n", MENU[6].upper(), "\n") | |
if len(usuarios_dict): | |
id = input("Selecciona el ID del usuario a eliminar: ") | |
if not id.isdigit(): | |
print("\n -> ID DE USUARIO [" + id + "] INVALIDO!\n") | |
else: | |
id = int(id) | |
if id not in usuarios_id_list: | |
print("\n -> ID DE USUARIO [" + str(id) + "] NO ENCONTRADO!\n") | |
else: | |
nombre = usuarios_dict[id]['nombre'] + " " + usuarios_dict[id]['apellido'] | |
telefono = usuarios_dict[id]['telefono'] | |
email = usuarios_dict[id]['email'] | |
print("") | |
print(" Id:", id) | |
print(" Nombre:", nombre) | |
print(" Telefono:", telefono) | |
print(" Email:", email) | |
print("") | |
opc = "" | |
while opc not in ["si".upper(), "no".upper()]: | |
opc = input("Estas segur@ de eliminar este usuario (si/no)?: ") | |
opc = opc.upper() | |
if opc not in ["si".upper(), "no".upper()]: | |
print("\n -> OPCION [" + opc + "] INVALIDA!") | |
print(" INTENTA NUEVAMENTE\n") | |
if opc == "SI": | |
del usuarios_dict[id] | |
usuarios_id_list.remove(id) | |
print("\n -> USUARIO ELIMINADO CON EXITO!\n") | |
print("") | |
else: | |
print(" -> NO SE HAN REGISTRADO USUARIOS!\n") | |
case '9': # Salir del programa | |
print("\n", MENU[7].upper(), "\n") | |
case _: # Proteccion: Opcion no reconocida. No deberia ocurrir | |
print("\n -> OPCION [" + opcion + "] NO RECONOCIDA!\n") | |
_ = input("\nPresione ENTER para continuar...") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment