Duda sobre Python

Iniciado por DarkPest, 19 Mayo 2017, 17:58 PM

0 Miembros y 1 Visitante están viendo este tema.

DarkPest

Código (python) [Seleccionar]
n1=4
n2=8
n3=8
print (n1, n2, n3)
def maxDeTres(n1,n2,n3):
   if n1>n2 and n1>n3:
       return n1
   elif n2>n1 and n2>n3:
       return n2
   elif n3>n1 and n3>n2:
       return n3
   else:
       return 'Algunos números son iguales'

print (maxDeTres(n1,n2,n3))

if maxDeTres(n1,n2,n3) == 'Algunos números son iguales' and n1==n2:
   return ('n1 y n2 son los mayores y son iguales')
elif n1==n3:
   return ('n1 y n3 son los mayores y son iguales')
else:
   return ('n2 y n3 son los mayores y son iguales')

   

Me puede ayudar alguien tengo la siguiente duda. Porque en mi segundo IF los returns me devuelven un error 'return' outside function. Con print si que funciona, pero con return no. Se que está relacionado con la identación pero no entiendo el porque. Muchas gracias

Eleкtro

#1
Cita de: DarkPest en 19 Mayo 2017, 17:58 PMSe que está relacionado con la identación pero no entiendo el porque.

Cita de: DarkPest en 19 Mayo 2017, 17:58 PM
Código (python) [Seleccionar]
def maxDeTres(n1,n2,n3):
...

if maxDeTres(n1,n2,n3) == 'Algunos números son iguales' and n1==n2:
   return ('n1 y n2 son los mayores y son iguales')
elif n1==n3:
   return ('n1 y n3 son los mayores y son iguales')
else:
   return ('n2 y n3 son los mayores y son iguales')

Esa unidad de condicionales no tiene indentación, por lo tanto se ejecutan fuera del bloque de la función, y el error que te indica es por que la sentencia return no tiene sentido usarla si no es para devolver un valor de retorno en el bloque de una función.

Cita de: DarkPest en 19 Mayo 2017, 17:58 PMCon print si que funciona, pero con return no.

Esa es la solución, puesto que evidentemente tú no quieres que esa función devuelva un string, tan solo quieres imprimir el string en la shell, así que no entiendo por que intentas usar "return" en vez de "print".

¡Saludos!








DarkPest

Cita de: Eleкtro en 19 Mayo 2017, 18:08 PM
Esa unidad de condicionales no tiene indentación, por lo tanto se ejecutan fuera del bloque de la función, y el error que te indica es por que la sentencia return no tiene sentido usarla si no es para devolver un valor de retorno en el bloque de una función.

Esa es la solución, puesto que evidentemente tú no quieres que esa función devuelva un string, tan solo quieres imprimir el string en la shell, así que no entiendo por que intentas usar "return" en vez de "print".

¡Saludos!

Aaaaaah de acuerdo muchísimas gracias por la aclaración. Utilizo el return porque estoy aprendiendo Python y claro, voy probando cosas. Creía que podía utilizarlo para lo mismo en este caso y  no tenía claro porque no me dejaba pero ya lo veo, mil gracias !!!