Python - ejercicio funciones y divisores python

 
Vista:
sin imagen de perfil

ejercicio funciones y divisores python

Publicado por víctor (7 intervenciones) el 22/01/2023 17:55:55
¿Alguien me echa una mano con este ejercicio por favor?

Se pide implementar en Python una función llamada perfecto. Esta función recibirá un único parámetro que deberá ser un numero entero positivo. La función deberá devolver True si se trata de un número perfecto y False en caso contrario. Un número perfecto es un número entero positivo en el que la suma de sus divisores sin contar el mismo es igual a si mismo.

6 es un número perfecto porque sus divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3.

El siguiente número perfecto es 28= 1 + 2 + 4 + 7 + 14.

Deberás incluir en tu programa el código para poder testearlo con pytest.

Esto es lo que llevo de momento:

import pytest

def perfecto(n):
try:
if type(n) == int:
if n>=0:
cont = 0
for i in range (0,n):
if (n%i) == 0:
print (i, 'es divisor')
cont = cont + 1
else:
return False
else:
return False
except ValueError and AssertionError:
return False

@pytest.mark.parametrize ('testcase, entrada, salida', [
(1,0,True),
(2,1,False),
(3,2,False),
(4,6,True),
(5,28,True),
(6,496,True),
(7,8128,True),
(8,1000,False),
(9,5678,False),
(10,999,False),
])

def test_perfecto (testcase, entrada, salida):
assert perfecto (entrada) == salida, 'caso{0}'.format(testcase)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

ejercicio funciones y divisores python

Publicado por Francisco Javier (313 intervenciones) el 22/01/2023 19:03:14
1
2
3
def perfecto(n):
    if sum([i for i in range(1,n) if n%i==0])==n:   return True
    else:   return False
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar