Funciones lógicas
A menudo, los programadores usan funciones booleanas que devuelven valores booleanos "verdaderos" o "falso" (
verdaderoo 
falso)
Estas funciones son útiles para   comprobar alguna propiedad.
Consideremos dos ejemplos de cómo escribir una función lógica que verifica si un número es par.
 
| Descripción | 
Ejemplo de subrutina | 
| 1) Mejor manera: el resultado de la expresión n % 2 == 0 será verdadero (True) o falso (False) | 
definido como par(n):
    retorno (n % 2 == 0)
 | 
| 2) Puedes escribirlo así, pero de todos modos es mejor no hacer un registro más largo | 
def es par(n):
    si n % 2 == 0:
        devolver verdadero;
    demás:
        devolver Falso
 | 
Y la última nota sobre trabajar con funciones y procedimientos: la cantidad de funciones y procedimientos en el programa no está limitada. Además, una subrutina puede llamar a otra subrutina e incluso a sí misma.
 
                                       
                                    
                                   
	
      
         
        
             Problem
                                  Un número perfecto es un número igual a la suma de todos sus divisores menos que él mismo (por ejemplo, el número 6 = 1 + 2 + 3). Escriba un programa que ingrese un número natural N y determine si el número N es perfecto Utilizar  una función para encontrar la suma de los divisores de un número y una función lógica para comprobar si el número es perfecto o no.
 
Entrada
La cadena de entrada contiene un número natural N .
Impresión
Si el número N – perfecto, el programa debería mostrar la palabra 'SÍ', de lo contrario – la palabra 'NO'.
 
Ejemplos
| # | 
Entrada | 
Salida | 
| 1 | 
28 | 
SI | 
| 2 | 
29 | 
NO |