Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: DarkPest en 19 Mayo 2017, 17:58 pm



Título: Duda sobre Python
Publicado por: DarkPest en 19 Mayo 2017, 17:58 pm
Código
  1. n1=4
  2. n2=8
  3. n3=8
  4. print (n1, n2, n3)
  5. def maxDeTres(n1,n2,n3):
  6.    if n1>n2 and n1>n3:
  7.        return n1
  8.    elif n2>n1 and n2>n3:
  9.        return n2
  10.    elif n3>n1 and n3>n2:
  11.        return n3
  12.    else:
  13.        return 'Algunos números son iguales'
  14.  
  15. print (maxDeTres(n1,n2,n3))
  16.  
  17. if maxDeTres(n1,n2,n3) == 'Algunos números son iguales' and n1==n2:
  18.    return ('n1 y n2 son los mayores y son iguales')
  19. elif n1==n3:
  20.    return ('n1 y n3 son los mayores y son iguales')
  21. else:
  22.    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


Título: Re: Duda sobre Python
Publicado por: Eleкtro en 19 Mayo 2017, 18:08 pm
Se que está relacionado con la identación pero no entiendo el porque.

Código
  1. def maxDeTres(n1,n2,n3):
  2. ...
  3.  
  4. if maxDeTres(n1,n2,n3) == 'Algunos números son iguales' and n1==n2:
  5.    return ('n1 y n2 son los mayores y son iguales')
  6. elif n1==n3:
  7.    return ('n1 y n3 son los mayores y son iguales')
  8. else:
  9.    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.

Con 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!


Título: Re: Duda sobre Python
Publicado por: DarkPest en 19 Mayo 2017, 18:34 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 !!!