Created
February 9, 2024 15:27
-
-
Save lokilloboss/2a69ae870cf150ccb68e40d8bf448263 to your computer and use it in GitHub Desktop.
Reto del dia 5
This file contains 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 | |
# Variable global para almacenar ids | |
ids_usuarios = [] | |
# Variable global para almacenar información de usuarios | |
usuarios = {} | |
# Función para generar ID único | |
def generate_id(): | |
global id_counter | |
id_counter += 1 | |
return id_counter | |
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 | |
# Almacenar información del usuario en un diccionario | |
usuarios[id_usuario] = { | |
"nombre": nombre, | |
"apellidos": apellidos, | |
"telefono": telefono, | |
"correo": correo | |
} | |
# 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 listar_usuarios(): | |
# Imprimir lista de ids | |
print("**Lista de IDs de usuarios registrados:**") | |
for id in ids_usuarios: | |
print(f"- {id}") | |
def ver_informacion_usuario(id_usuario): | |
# Verificar si el ID existe | |
if id_usuario in usuarios: | |
# Imprimir información del usuario | |
print("**Información del usuario:**") | |
print(f"ID: {id_usuario}") | |
for key, value in usuarios[id_usuario].items(): | |
print(f"{key.capitalize()}: {value}") | |
else: | |
print("Error: ID de usuario no encontrado.") | |
def editar_usuario(id_usuario): | |
# Verificar si el ID existe | |
if id_usuario in usuarios: | |
print("**Editar información del usuario:**") | |
# Solicitar nuevos valores | |
nombre = input("Ingrese el nuevo nombre: ") | |
apellidos = input("Ingrese los nuevos apellidos: ") | |
telefono = input("Ingrese el nuevo número de teléfono: ") | |
correo = input("Ingrese el nuevo correo electrónico: ") | |
# Actualizar información del usuario en el diccionario | |
usuarios[id_usuario] = { | |
"nombre": nombre, | |
"apellidos": apellidos, | |
"telefono": telefono, | |
"correo": correo | |
} | |
print("Información actualizada correctamente.") | |
else: | |
print("Error: ID de usuario no encontrado.") | |
def new_user(): | |
""" | |
Function to create a new user. | |
""" | |
# Preguntar cuántos usuarios se quieren registrar | |
numero_usuarios = int(input("¿Cuántos usuarios desea registrar?: ")) | |
# Registrar cada usuario | |
for i in range(numero_usuarios): | |
nombre = input("Ingrese el nombre del usuario: ") | |
apellidos = input("Ingrese los apellidos del usuario: ") | |
telefono = input("Ingrese el número de teléfono del usuario: ") | |
correo = input("Ingrese el correo electrónico del usuario: ") | |
# Registrar el usuario solo si la información es válida | |
if registrar_usuario(nombre, apellidos, telefono, correo, generate_id()): | |
print("Usuario creado correctamente.") | |
print("-" * 20) | |
def show_user(id_usuario): | |
""" | |
Function to display information of a user by ID. | |
""" | |
ver_informacion_usuario(id_usuario) | |
def edit_user(id_usuario): | |
""" | |
Function to edit information of a user by ID. | |
""" | |
editar_usuario(id_usuario) | |
def delete_user(id_usuario): | |
""" | |
Function to delete a user by ID. | |
""" | |
if id_usuario in usuarios: | |
del usuarios[id_usuario] | |
ids_usuarios.remove(id_usuario) | |
print("Usuario eliminado correctamente.") | |
else: | |
print("Error: ID de usuario no encontrado.") | |
def list_users(): | |
""" | |
Function to list all user IDs. | |
""" | |
listar_usuarios() | |
def main(): | |
""" | |
Main function to handle user interactions. | |
""" | |
global id_counter | |
id_counter = 0 | |
while True: | |
print("\nMenú:") | |
print("A.- Registrar nuevos usuarios") | |
print("B.- Listar usuarios") | |
print("C.- Ver información de un usuario por ID") | |
print("D.- Editar información de un usuario por ID") | |
print("E.- Eliminar un usuario por ID") | |
print("F.- Mostrar información de un usuario por ID") | |
print("G.- Salir") | |
opcion = input("Seleccione una opción (A/B/C/D/E/F/G): ").upper() | |
if opcion == "A": | |
# Register new user | |
new_user() | |
elif opcion == "B": | |
# List users | |
list_users() | |
elif opcion == "C": | |
# Show user information by ID | |
id_usuario = int(input("Ingrese el ID del usuario: ")) | |
show_user(id_usuario) | |
elif opcion == "D": | |
# Edit user information by ID | |
id_usuario = int(input("Ingrese el ID del usuario a editar: ")) | |
edit_user(id_usuario) | |
elif opcion == "E": | |
# Delete user by ID | |
id_usuario = int(input("Ingrese el ID del usuario a eliminar: ")) | |
delete_user(id_usuario) | |
elif opcion == "F": | |
# Show user information by ID | |
id_usuario = int(input("Ingrese el ID del usuario: ")) | |
show_user(id_usuario) | |
elif opcion == "G": | |
# Exit the program | |
print("Saliendo del programa. ¡Hasta luego!") | |
break | |
else: | |
print("Opción no válida. Por favor, elija una opción válida.") | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment