Python - Error en programa de numero perfecto

   
Vista:

Error en programa de numero perfecto

Publicado por Carlota (13 intervenciones) el 31/10/2017 10:15:59
Hola, he creado este programa para que el usuario introduzca un número entero y diga si es perfecto, pero me da error.

1
2
3
4
5
6
7
8
9
10
def Numeroperfecto(num):
    suma = 0
num = float(raw_input("introduzca un numero: "))
for i in range(num/2):
    if (num % (i+1) == 0):
        suma += (i+1)
if num == suma:
    return True
else:
    return False
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 xve

Error en programa de numero perfecto

Publicado por xve (1565 intervenciones) el 31/10/2017 13:10:00
Hola Carlota, te comento las cosas que veo...

- No entiendo la función Numeroperfecto(),,,
- No puedes poner un return si no estas en una función.
- range() tiene que recibir un entero, no puede recibir un float...
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

Error en programa de numero perfecto

Publicado por Carlota (13 intervenciones) el 31/10/2017 14:53:48
El numero perfecto es un número natural que es igual a la suma de sus divisores propios positivos.
Por ejemplo el 6 es un número perfecto porque sus divisores propios son 1, 2 y 3; y 6 = 1 + 2 + 3
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

Error en programa de numero perfecto

Publicado por Andrés (24 intervenciones) el 31/10/2017 18:21:24
Si lo coloco tal y como esta, no funciona por indentación, y hay que modificar el tipo a int

1
2
3
4
5
6
7
8
9
10
def Numeroperfecto(num):
    suma = 0
    num = int(raw_input("introduzca un numero: "))
    for i in range(int(num/2)):
        if (num % (i+1) == 0):
            suma += (i+1)
    if num == suma:
        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

Error en programa de numero perfecto

Publicado por Carlota (13 intervenciones) el 01/11/2017 13:56:44
Sigue sin funcionar...
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
Imágen de perfil de xve

Error en programa de numero perfecto

Publicado por xve (1565 intervenciones) el 01/11/2017 18:22:30
Hola Carlota, creo que ahora ya esta bien...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def NumeroPerfecto(num):
	suma = 0
	for i in range(1,num):
		if (num % (i) == 0):
			suma += (i)
	if num == suma:
		return True
	else:
		return False
 
num = int(raw_input("introduzca un numero: "))
if NumeroPerfecto(num):
	print("%s es un numero perfecto" % num)
else:
	print("%s NO es un numero perfecto" % num)

para comprobar que numeros son perfectos entre el 1 y el 100 he utilizado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def NumeroPerfecto(num):
	suma = 0
	for i in range(1,num):
		if (num % (i) == 0):
			suma += (i)
	if num == suma:
		return True
	else:
		return False
 
for i in range(100):
	if NumeroPerfecto(i):
		print("%s es un numero perfecto" % i)
	else:
		print("%s NO es un numero perfecto" % i)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Error en programa de numero perfecto

Publicado por Carlota (13 intervenciones) el 02/11/2017 15:22:28
Gracias, pero aún así sigue sin funcionar como quiero, tendría que ser con cualquier número, no solo hasta el 100....
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
Imágen de perfil de xve

Error en programa de numero perfecto

Publicado por xve (1565 intervenciones) el 03/11/2017 07:07:13
En el primer código que te he puesto, puedes poner cualquier número... no te sirve?
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
Revisar política de publicidad