Created
February 9, 2024 15:03
-
-
Save lokilloboss/6ff22469d32c4e0941432fe7bfbd212b to your computer and use it in GitHub Desktop.
Reto del dia 4
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 | |
# 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 main(): | |
""" | |
Función principal que registra, lista, muestra información y edita usuarios. | |
""" | |
# Initialize id_counter outside functions | |
global id_counter | |
id_counter = 0 | |
while True: | |
# Menú de opciones | |
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.- Salir") | |
opcion = input("Seleccione una opción (A/B/C/D/E): ").upper() | |
if opcion == "A": | |
# 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(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) | |
elif opcion == "B": | |
# Listar usuarios | |
listar_usuarios() | |
elif opcion == "C": | |
# Ver información de un usuario por ID | |
id_usuario = int(input("Ingrese el ID del usuario: ")) | |
ver_informacion_usuario(id_usuario) | |
elif opcion == "D": | |
# Editar información de un usuario por ID | |
id_usuario = int(input("Ingrese el ID del usuario a editar: ")) | |
editar_usuario(id_usuario) | |
elif opcion == "E": | |
# Salir del programa | |
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