14. Ejercicio 2 11/06

El alumno debe crear un script en Python que simule un sistema de gestión de contactos básico. El programa debe utilizar funciones, diccionarios y listas para almacenar y administrar la información de los contactos. Debe ofrecer un menú interactivo con diferentes opciones para que el usuario seleccione que quiere realizar, solo finaliza con S y debe indicar con un texto por pantalla si el ingreso es invalido, el menú se realizar invocando a la función menu, que no recibe nada y solo regresa 1,2,3,4,5 o S. Menú ( 10 puntos)

  1. Agregar contacto (30 puntos)

  2. Buscar contacto (10 puntos)

  3. Alta de grupos (10 puntos)

  4. Mostrar grupos (20 puntos)

    S. Salir

Main script , lógica , etc (20 puntos)

Definir un diccionario vacío llamado agenda para almacenar los contactos.

Definir una lista llamada grupos=["Trabajo"].

Cada contacto se almacenará en el diccionario con los campos: nombre (clave del diccionario), número de teléfono y grupo.

Los nombres propios se DEBEN formatear de manera que la primer letra sea mayúscula, se recomienda el método .capitalize(). Este Jorge es correcto, este jorge NO es correcto.

El campo número de Teléfono debe ser numérico, si no lo es se debe solicitar reingreso.

El campo grupo, se toma de los valores de una lista llamada grupos que inicialmente tiene cargado solo un valor. Esta lista puede tener por ejemplo "Familia", "Futbol", estos nombres se dan de alta con el punto 3 del menú.

El punto 1, permite agregar un contacto a la agenda llamando a la función llamada agregar_contacto que solicita al usuario ingresar nombre, número de teléfono y grupo, si el nombre ya existe en la agenda, se debe indicar con un cartel en la pantalla y presentar el menú nuevamente.

Observación, el grupo se debe ser alguno de los cargados en la lista grupos y debe ser validado (si no existe pedir reingreso solo del grupo). La función retorna una variable booleana que se usar par evitar que no se ejecute el punto 2 y 4 sin haber cargado nada.

El punto 2, permite llamar a la función buscar_contacto, que recibe como argumento el nombre del contacto a buscar y muestra los datos: nombre, teléfono, grupo. Si no encuentra el contacto debe mostrar un cartel indicando que no hay coincidencias.

El punto 3, llama a la función cargar_grupos, esta función permite agregar a la lista grupos, lugares de entorno de los contactos, los elementos de esta lista no pueden repetirse. Ejemplo grupo=["Futbol", "Trabajo","Casa"]. Si se ingresa un valor repetido a la lista se debe solicitar reingreso son un cartel : "Ya existe ese grupo".

Punto 4, si el usuario selecciona esta opción, debe ingresar por teclado el nombre de un grupo de la lista grupos (la lista grupos se debe mostrar por pantalla previo al pedido de carga) y validarlo (si no se encuentra en la lista, debe pedir reingreso). Con este valor como argumento se invoca a la función buscar_grupo, la cual muestra los datos de todos los contactos que pertenezcan a ese grupo, por ejemplo si elige "Trabajo" muestra todos los datos de contacto de la agenda que son del entorno o grupo de trabajo.