Tutorial Hawk 10 -Funciones

Hola a todos, en este nuevo tutorial hablare sobre las funciones, su sintaxis, y como es que nos sirven y ayudan.


Una función en programación no es mas que lineas de código ligadas a un nombre, y cada vez que "llamamos" a dicha función realiza las lineas de código contenidas.

En Python todas las funciones regresan un valor, ya sea numérico  carácter  Booleano  etc. pero en general si a una función en Python no se le indica que valor regresar nos regresa aun así un valor que es None.

La sintaxis es muy sencilla pero al principio les podrá parecer un poco difícil pues es complicado para algunos adaptarse a ciertos conceptos (Lo digo por experiencia xD), bien pues para empezar a crear una función la debemos definir:

def: esta palabra reservada es el indicador de una nueva función

def nombre_de_la_funcion("Aquí van los parámetros que recibe la función sino recibe nada solo se deja vacio"):

Ahora les mostrare un ejemplo de una función que no recibe parámetros:
-----------------------------------------------------------------------------------------------------------------------
def mi_funcion():
    print "Hola Mundo"
-----------------------------------------------------------------------------------------------------------------------

Si guardan esta función en un archivo y corren el archivo verán que no hace absolutamente nada, pues para que dicha función se ejecute tenemos que llamarla, y en Python en muy sencillo, con el nombre de la función seguida de paréntesis,  los paréntesis son necesarios para cuando tenemos que enviarle parámetros o valores a la función  pero aun cuando la función no recibe parámetros debemos ponerle paréntesis para indicarle a Python que estamos llamando a una función.

-----------------------------------------------------------------------------------------------------------------------
def mi_funcion(): 
    print "Hola Mundo" 
mi_funcion()
-----------------------------------------------------------------------------------------------------------------------
En la linea 3 estamos llamando a la función "mi_funcion" y ahora si, si corremos el programa con esta nueva modificación nos deberá imprimir "Hola Mundo".

Las funciones las podemos llamar las veces que las ocupemos, y pues como los ciclos también las ventaja es que nos ahorran muchas lineas de código  pero mejor aun podemos hacer modelos o estructuras de datos mas versátiles.

Bien ahora les mostrare una funcion que si recibe parametros:

-----------------------------------------------------------------------------------------------------------------------
def suma(x,y): 
    resultado=x+y 
    print resultado 
suma()
-----------------------------------------------------------------------------------------------------------------------

En este caso la función "suma" recibe dos parámetros por tanto si corremos nuestro programa tal cual esta nos marcara un error, pues estamos llamando a la función pero no le estamos mandando parámetros.

-----------------------------------------------------------------------------------------------------------------------
def suma(x,y): 
    resultado=x+y 
    print resultado 
numero1=2 
numero2=5 
suma(numero1, numero2)
-----------------------------------------------------------------------------------------------------------------------

Ahora en este código al correrlo nos mostrara 7, pues es la suma de 5+2 pero hay que tener en cuenta algunas cosas en este código, en la linea 6 estamos llamando a la función suma y le estamos mandando las variables numero1 y numero2 así que el valor que contengan dichas variables sera lo que estaremos enviando a la función, muy importante el orden, numero1 caerá en "x" y numero2 caerá en "y" en el caso de la suma no afectaría  pero si en el caso de una resta o una división  por eso hay que tener mucho cuidado.

Entonces falta el ejemplo de una función que regresa un valor:

-----------------------------------------------------------------------------------------------------------------------

def suma(x,y): 
    resultado=x+y 
    return resultado 
numero1=2 
numero2=5 
resultado = suma(numero1, numero2) 
print resultado
-----------------------------------------------------------------------------------------------------------------------

Bien como ven casi no hay cambios, pero hay algo nuevo sin duda, en la linea 3 esta una palabra reservada de Python que indica el valor que va a regresar en nuestro caso regresa "resultado", cuando una función regresa algo por medio del return tenemos que guardar ese valor en algún lado por lo que tenemos que crear una variable mas en nuestro código a la cual le asignamos la llamada a la función suma, OJO la variable "resultado" de la función no es la misma que esta fuera de nuestra función.

Una funcion puede recibir tantos parametros como necesitemos, pero puede que no tengamos idea de cuantos parametros va a recibir nuestra funcion para eso podemos realizar algo asi:

-----------------------------------------------------------------------------------------------------------------------
def suma(x,y,*variable): # *variable genera una tupla de x elementos 
    resultado=x+y 
    for numero in variable: 
        resultado += numero 
    return resultado 
numero1=2 
numero2=5 
resultado = suma(numero1, numero2,5) 
print resultado
-----------------------------------------------------------------------------------------------------------------------

Como ven en la linea 1 definimos la función suma pero ahora recibe 2 o mas elementos, el asterisco antes de la nueva variable indica que va a crear un tupla con todos los datos adicionales que reciba la función  en la linea 2 sumamos normalmente x+y pero en la linea 3 nos vemos obligados a utilizar un ciclo for para recorrer la tupla que nos crea "*variable" de ese modo podemos sumar todos los parámetros  en la linea 8 llamamos a la función y le enviamos tres parámetros dos variables y un numero entero, pero bien podríamos mandarle 10 o 100 los invito a experimentar.

Bien ahora para profundizar en el tema o mas bien para repasar lo visto hasta ahora modificare una vez mas el juego del tutorial anterior:

-----------------------------------------------------------------------------------------------------------------------

#============================================================================== #Funciones #============================================================================== 
         def dialogos(temas,cara,personaje):
             #mostramos las respuestas posibles:
             puntos = 0 print "\nHablar de : \n1) Música 2) Comedia 3) Baile 4) Comida 5) Coqueteo 6) Autos 7) Computación" 
             tema= raw_input()
             #Camparamos la respuesta 
             if int(tema) == 1: 
                 print personaje["Nombre"],":\nSi ami también me encanta la música  sobre todo la de ProngonStons",cara["Feliz"] 
                 puntos+= personaje["Música"]#sumamos los puntos 
                 tema= "ninguno"#reseteamos los gustos 
             elif int(tema) == 2: 
                  print personaje["Nombre"],":\nHey que buen chiste, ¿de donde lo sacaste? ",cara["Lengua"] 
                  puntos += personaje["Comedia"]#sumamos los puntos 
                  tema= "ninguno"#reseteamos los gustos 
             elif int(tema) == 3: 
                 print personaje["Nombre"],":\n...este pues si bailo pero casi nada, ocupo andar entonada...",cara["Triste"] 
                 puntos += personaje["Comedia"]#sumamos los puntos 
                 tema= "ninguno"#reseteamos los gustos 
             elif int(tema) == 4: 
                 print personaje["Nombre"],":\nSi, ese restaurante esta de lujo, y el servicio es muy bueno, sin duda iría todos los días",cara["Feliz"] 
                 puntos+= personaje["Comida"]#sumamos los puntos 
                 tema= "ninguno"#reseteamos los gustos 
             elif int(tema) == 5: print personaje["Nombre"],":\nPero que te pasa imbecil? Osea, apenas me conoces... IDIOTA!",cara["Sorprendido"] 
                 puntos+= personaje["Coqueteo"]#sumamos los puntos 
                 tema= "ninguno"#reseteamos los gustos 
             elif int(tema) == 6: print personaje["Nombre"],":\nPues si tu lo dices... (pinche carro mugroso) si, esta bonito...",cara["Triste"] 
                 puntos += personaje["Autos"]#sumamos los puntos 
                 tema= "ninguno"#reseteamos los gustos 
             elif int(tema) == 7: print personaje["Nombre"],":\nMe encanta la computación, soy programadora en Python",cara["Sonriente"] 
             puntos+= personaje["Computación"]#sumamos los puntos 
             tema= "ninguno"#reseteamos los gustos 
             return puntos 
         def puntuacion(jugador,puntos,personaje): 
             print " " #En base a los puntos obtenidos muestra un mensaje final mas que claro xD 
             if puntos >= 20: 
                 print personaje["Nombre"],":\nEres muy agradable, hay que salir luego, este es mi Google+" 
             elif puntos >=10: 
                 print personaje["Nombre"],":\nMe caíste bien, adiós",jugador 
             elif puntos >= 5: 
                 print personaje["Nombre"],":\nAdiós", jugador 
             elif puntos >= 0: 
                 print personaje["Nombre"],":\nAdiós" 
             elif puntos < 0: 
                 print personaje["Nombre"],":\nEres todo un idiota no se como me tope contigo" 
         def captura_nombre(): 
             while True: 
                 nombre_jugador = raw_input()#Campturamos el nombre 
                 if nombre_jugador != "": 
                     return nombre_jugador 
                     break 
                 print "Introduce tu nombre por favor" 
         def main(): 
             puntos = 0 
             tema = "ninguno" 
             cara = {"Feliz": ":-)", "Triste": ":-(", "Sonriente": ":-D", "Sorprendido": ":-O","Lengua":":-P"} 
             andrea = {"Nombre": "Andrea","Música": 5, "Comedia": 3, "Baile":-2, "Comida": 1, "Coqueteo":-10, "Autos": -2, "Computación": 10} 
             print "Hola mi nombre es",andrea["Nombre"], "¿Cual es tu nombre?" 
             jugador = captura_nombre() 
             print andrea["Nombre"],":\nMucho gusto",jugador, "hoy es un buen dia :D" for i in range(2): 
             puntos += dialogos(tema,cara,andrea) 
             puntuacion(jugador,puntos,andrea) 
             main()

--------------------------------------------------------------------------------------------------------------------

Bien, esta vez explicare todo el código pues es un poco mas complejo que el anterior, y como pueden ver ahora son mas lineas de código, pero esta mucho mas entendible o eso espero xD


  • Comenzaremos por la linea 71, Python como tal no tiene un "main" como en C o C++ pero podemos emularlo con una función, entonces en la linea 71 creamos la función main que contendrá todas las faces de nuestro juego.
  • De la linea 72  a la 75 creamos las variables como en el juego anterior.
  • En la linea 78 solo imprimimos una cadena mas el nombre del personaje con el que estamos interactuando.
  • En la linea 80 creamos una variable de jugador a la cual le asignamos la función de captura_nombre() en esta función no esta nada mas que el proceso de captura del nombre, y como consecuencia regresa el nombre introducido el cual se guarda en la variable nombre del "main"
  • En la linea 81 solo imprimimos el nombre del personaje con el cual estamos interactuando mas un mensaje.
  • En la linea 83 tenemos un ciclo que ejecuta 2 veces la linea 84.
  • En la linea 84 tenemos la variable puntos como nuestro contador, al cual le sumamos el resultado que nos arroja la función de diálogos. La función de diálogos recibe como parámetros el tema, el diccionario que hicimos con las caras, y el personaje con el que se esta interactuando, esta función lo que nos regresa son los puntos obtenidos de las platicas realizadas.
  • En la linea 86 tenemos la llamada a la función puntuación la cual examina el numero de puntos obtenidos y dependiendo de ello nos arroja una cadena. Esta función recibe como parámetros el nombre del jugador, los puntos del jugador y el personaje con el que se esta interactuando y en este caso la función no nos regresa un valor para utilizarlo.
  • Y por ultimo tenemos en la linea 88 la llamada a nuestro "main".

Bueno, eso es todo por hoy, ojala que les aya gustado pues me esmere mucho en este tutorial en especifico, no olviden dejar un +1 aquí a bajito no cuesta nada, nos vemos a la próxima y sigan disfrutando de Python.



Comentarios

Entradas más populares de este blog