class DirectorioTelefonico:
def __init__(self):
"""Inicializa el directorio telefónico con una tabla hash vacía."""
# Usamos un diccionario como tabla hash, donde la clave será una tupla (nombre, apellido)
# y el valor será el teléfono.
[Link] = {}
def insertar_registro(self, nombre, apellido, telefono):
"""Inserta un nuevo registro en el directorio telefónico."""
clave = ([Link](), [Link]()) # La clave es una tupla de nombre y apellido
if clave in [Link]:
print(f"El registro de {nombre} {apellido} ya existe.")
else:
[Link][clave] = telefono # Almacenamos el teléfono en la tabla hash
print(f"Registro de {nombre} {apellido} agregado con éxito.")
def buscar_registro(self, nombre, apellido):
"""Busca un registro en el directorio por nombre y apellido."""
clave = ([Link](), [Link]()) # La clave de búsqueda es una tupla de nombre y
apellido
if clave in [Link]:
telefono = [Link][clave]
print(f"Registro encontrado: {nombre} {apellido}: {telefono}")
else:
print(f"Registro de {nombre} {apellido} no encontrado.")
def borrar_registro(self, nombre, apellido):
"""Borra un registro del directorio por nombre y apellido."""
clave = ([Link](), [Link]()) # La clave de búsqueda es una tupla de nombre y
apellido
if clave in [Link]:
del [Link][clave] # Elimina el registro de la tabla hash
print(f"Registro de {nombre} {apellido} borrado con éxito.")
else:
print(f"Registro de {nombre} {apellido} no encontrado.")
def actualizar_registro(self, nombre, apellido, nuevo_nombre=None, nuevo_apellido=None,
nuevo_telefono=None):
"""Actualiza el teléfono, nombre o apellido de un registro en el directorio."""
clave = ([Link](), [Link]()) # La clave de búsqueda es una tupla de nombre y
apellido
if clave in [Link]:
if nuevo_nombre:
nombre = nuevo_nombre # Si se pasa un nuevo nombre, lo actualizamos
if nuevo_apellido:
apellido = nuevo_apellido # Si se pasa un nuevo apellido, lo actualizamos
if nuevo_telefono:
[Link][([Link](), [Link]())] = nuevo_telefono # Actualizamos el
teléfono
# Después de modificar los campos, reorganizamos el registro en la tabla hash
[Link][([Link](), [Link]())] = [Link](clave)
print(f"Registro actualizado: {nombre} {apellido} - Teléfono: {nuevo_telefono if
nuevo_telefono else [Link][([Link](), [Link]())]}")
else:
print(f"Registro de {nombre} {apellido} no encontrado.")
def mostrar_directorio(self):
"""Muestra todos los registros del directorio telefónico."""
if not [Link]:
print("El directorio está vacío.")
else:
print("\nDirectorio completo:")
for clave, telefono in [Link]():
nombre, apellido = clave
print(f"{[Link]()} {[Link]()}: {telefono}")
# Función principal para interactuar con el usuario
def main():
directorio = DirectorioTelefonico() # Creamos una instancia del directorio telefónico
while True:
print("\nMenú de opciones:")
print("1. Insertar nuevo registro")
print("2. Buscar registro")
print("3. Actualizar registro")
print("4. Borrar registro")
print("5. Mostrar directorio")
print("6. Salir")
opcion = input("Selecciona una opción (1-6): ")
if opcion == "1":
nombre = input("Introduce el nombre: ")
apellido = input("Introduce el apellido: ")
telefono = input("Introduce el teléfono: ")
directorio.insertar_registro(nombre, apellido, telefono)
elif opcion == "2":
nombre = input("Introduce el nombre a buscar: ")
apellido = input("Introduce el apellido a buscar: ")
directorio.buscar_registro(nombre, apellido)
elif opcion == "3":
nombre = input("Introduce el nombre a actualizar: ")
apellido = input("Introduce el apellido a actualizar: ")
nuevo_nombre = input("Introduce el nuevo nombre (deja en blanco para no modificar): ")
nuevo_apellido = input("Introduce el nuevo apellido (deja en blanco para no modificar): ")
nuevo_telefono = input("Introduce el nuevo teléfono (deja en blanco para no modificar): ")
directorio.actualizar_registro(nombre, apellido, nuevo_nombre or None, nuevo_apellido or
None, nuevo_telefono or None)
elif opcion == "4":
nombre = input("Introduce el nombre a borrar: ")
apellido = input("Introduce el apellido a borrar: ")
directorio.borrar_registro(nombre, apellido)
elif opcion == "5":
directorio.mostrar_directorio()
elif opcion == "6":
print("Saliendo del programa.")
break
else:
print("Opción no válida. Por favor, selecciona una opción entre 1 y 6.")
# Ejecutamos la función principal si el script es ejecutado
if __name__ == "__main__":
main()