
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)
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


0