o
    yAj                     @   s   d d Z dd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Z	dd Z
g Z	 e  e Zedkr>ee n2edkrGee n)edkrPee n edkr]e	e ed nedkrfe
e n
edkrped dS q/) c                 C   s   |   dkS )u?   Retorna True si el título no está vacío ni es solo espacios. )strip)titulo r   ejercicio1.pyvalidar_titulo   s   r   c                 C   s"   |   d sdS t| dkS )z7Retorna True si copias_texto representa un entero >= 0.-F    r   lstripisdigitint)copias_textor   r   r   validar_copias
      r   c                 C   s"   |   d sdS t| dkS )z8Retorna True si prestamo_texto representa un entero > 0.r   Fr   r	   )prestamo_textor   r   r   validar_prestamo   r   r   c                   C   sD   t d t d t d t d t d t d t d t d d	S )
u5   Muestra las opciones del menú principal en pantalla.u&   
========== MENÚ PRINCIPAL ==========z1. Agregar libroz2. Buscar libroz3. Eliminar libroz4. Actualizar disponibilidadz5. Mostrar librosz6. Salirz%=====================================N)printr   r   r   r   mostrar_menu   s   r   c                  C   s@   	 t d} |   rdt|   krdkrt| S  td q)ue   Lee y retorna la opción elegida por el usuario, validando que
    sea un número entero entre 1 y 6.Tu   Seleccione una opción (1-6):       u8   Opción inválida. Debe ingresar un número entre 1 y 6.)inputr   r   r   r   )Zopcion_textor   r   r   leer_opcion&   s   "r   c                 C   s   t d}t|std dS t d}t|std dS t d}t|s*td dS |t|t|dd	}| | td
| d dS )zwSolicita los datos de un libro, los valida y, si todos son
    correctos, agrega el nuevo registro a la lista 'libros'.u   Ingrese el título del libro: uG   Error: el título no puede estar vacío ni ser solo espacios en blanco.NzIngrese la cantidad de copias: uE   Error: las copias deben ser un número entero mayor o igual que cero.u*   Ingrese el período de préstamo (días): uJ   Error: el período de préstamo debe ser un número entero mayor que cero.F)r   copiasprestamo
disponibleLibro 'z' agregado correctamente.)r   r   r   r   r   r   append)librosr   r   r   libror   r   r   agregar_libro3   s&   
r   c                 C   s.   t t| D ]}| | d |kr|  S qdS )u   Recorre la lista 'libros' buscando un registro cuyo título
    coincida exactamente con 'titulo'. Retorna la posición encontrada
    o -1 si no existe.r   )rangelenr   r   posicionr   r   r   buscar_libroR   s
   r%   c                 C   s   t d}t| |}|dkr?| | }td| d td|d   td|d   td	|d
   td|d   dS td| d dS )uV   Pide el título a buscar, usa buscar_libro y muestra el
    resultado correspondiente.u'   Ingrese el título del libro a buscar: r    u"   
Libro encontrado en la posición :	   Título: r   Copias: r      Préstamo: r   zDisponible: r   
El libro '' no se encuentra registrado.N)r   r%   r   )r   r   r$   r   r   r   r   opcion_buscar_libro[   s   
r,   c                 C   sL   t d}t| |}|dkr| | td| d dS td| d dS )u{   Pide el título del libro a eliminar, lo localiza mediante
    buscar_libro y, si existe, elimina ese registro de la lista.u)   Ingrese el título del libro a eliminar: r    r   z' eliminado correctamente.r*   r+   N)r   r%   popr   r#   r   r   r   eliminar_libron   s   

r.   c                 C   s,   | D ]}|d dkrd|d< qd|d< qdS )um   Recorre la lista completa de libros y actualiza el campo
    'disponible' de cada registro según sus copias.r   r   Tr   FNr   )r   r   r   r   r   actualizar_disponibilidad}   s
   

r/   c                 C   s   t |  td | std dS | D ]0}|d rdnd}td|d   td	|d
   td|d   td|  td qdS )zuActualiza la disponibilidad de todos los libros y luego
    muestra los datos de cada uno con el formato establecido.z
=== LISTA DE LIBROS ===zNo hay libros registrados.Nr   Z
DISPONIBLEz
SIN COPIASr'   r   r(   r   r)   r   zEstado: z-*********************************************)r/   r   )r   r   Zestador   r   r   mostrar_libros   s   
r0   Tr            z1Disponibilidad actualizada para todos los libros.   r   z*Gracias por usar el sistema. Vuelva ProntoN)r   r   r   r   r   r   r%   r,   r.   r/   r0   r   Zopcionr   r   r   r   r   <module>   s<   
	




