Curso Python para GUTL (VI)

Hola GUTL, dando continuación al curso de python, seguimos hoy con este post donde veremos las como declarar y usar funciones.

OK, vamos allá. Usa el lóbulo frontal de tu cerebro para imaginar que estas haciendo un programa para un cliente, que por alguna razón, quiere que el script te pregunte el nombre, la edad y te muestre si tu edad y tu año de nacimiento es par/impar… que haríamos?

Primero pediriamos nombre y edad

nombre = input(‘Cual es tu nombre? ‘)

edad = int(input(‘Cuantos años tienes? ‘))

nacimiento = 2014 – edad

Entonces quedaría calcular si la edad es par o impar,

if edad % 2 == 0:

   print (‘tienes ´,edad,´, una edad par)

else:

   print(´nop, ´, edad,´ no es par´)

Y si tu año de nacimiento es par o impar

If nacimiento % 2 == 0:

   print(‘naciste en el ’,nacimiento,’, y es par’)

else:

   print(‘ups, naciste en ‘,nacimiento,’ , y no es par’)

No se si notas que aquí hay código repetido, hmmmm eso no es bueno, alarga innecesariamente tu script y no es muy limpio que digamos… es aquí donde entra nuestra querida función.

Todo bien, pero que es una función?

Aprenderemos en la práctica… Primero creamos la función con def, la sintaxis es algo asi

def nombre_de_funcion(parametro):

   cuerpo de la función

Si, es algo como un loop, tiene un cuerpo indentado (subordinado) que se ejecuta cada vez que llamamos a nuestra función… pero hay algo extraño aquí, ese parámetro, que es? El parámetro es un valor que le pasaremos a nuestra función, queremos una función para saber si un numero dado es par o impar, nombraremos nuestra función es_par y el parámetro será numero.

def es_par(numero):

   if numero % 2 == 0:

      return ‘true’

   else:

      return ‘false’

Esta es nuestra función, su trabajo es analizar un número que le demos, que guarda en la variable numero, y devolver true si es par o false si es impar y esto lo hace con la línea if numero % 2 == 0

 

Una vez declarada la función, en cualquier parte de nuestro programa, podemos hacer lo siguiente:

x = es_par(44)

print (x)

con la línea x = es_par(44) , si, aquí llamamos a nuestra función y el parámetro que le pasamos es el 44, verás que esta entre paréntesis, es el que nuestra función recoge como la variable numero.. y print(x) nos muestra ‘true’ porque se cumple que 44 % 2 == 0.

Sabiendo esto, como construimos nuestro script?

Allá vamos… comenzamos declarando nuestra función, porque no la podemos usar antes de declararla 🙂

def es_par(numero):

   if numero % 2 == 0:

      return ‘true’

   else:

      return ‘false’

nombre = input(‘Cual es tu nombre? ‘)

edad = int(input(‘Cuantos años tienes? ‘))

nacimiento = 2014 – edad

if (es_par(edad) == ‘true’): print (‘tienes ´,edad,´, una edad par)

else: print(´nop, ´, edad,´ no es par´)

if (es_par(nacimiento)): print(‘naciste en el ’,nacimiento,’, y es par’)

else: print(‘ups, naciste en ‘,nacimiento,’ , y no es par’)

Ves, como usamos nuestra función, en lugar de repetir tooodas esas operaciones por cada numero que queramos saber si es par o no, reutilizamos el código, esto es muy importante y útil, además que te hará la vida mucho mas fácil a la hora de actualizar tu programa, o darle mantenimiento.

Además, te preguntaras porque no se indentó después de esos if: y esos else: !!??? Bueno, porque solo viene una simple línea, y es mas cómodo ponerla al lado que indentar, prueba tu a ver como se ve mas limpio tu código…

El % no es simple división, es modulo, digamos que 45 % 2 = 1, por lo que no es par, y 44 % 2 = 0, por lo que es par… Si queremos usar división, tenemos 44 / 2 = 22.

¿Te resultó interesante? Compártelo ...



danielqba

Publicado por danielqba

Forma parte de GUTL desde el 7 agosto, 2013. si Linux te da la espalda, tócale el kernel

Este artículo tiene 30 comentarios

  1. ilidan
    Me gustarias que me ayudaras con una pequeña aplicacion que quiero hacer en python. Lo que quiero es que primeramente me pida una rita donde buscar, lo otrro es que etenciones, luego de realizada la busqueda me de opcion de borrar todo lo encontrado.! Que crees? 🙂

  2. ups donde dice (rita) quise desir ruta, donde dice (etenciones) quise desir extenciones, pues tengo problemas con las teclas de este teclado que algunas no pinchan. 🙁

  3. vaya voy a mejorar un poco tu función
    def es_par(numero):
    return False if (numero % 2) else True
    Aquí sale en una línea y te devuelve un boolean en vez de un str

    • Se te fue un poco ahi..
      return True if (numero % 2 == 0) else False
      aunque esto limpia el codigo, confunde a los que se inician. Y recuerda que el objetivo es mantenerlo simple 🙂

      • A ver, en python cualquier variable cuyo valor sea 0, », (), {} o [] al darle if devuelve False, y True en caso contrario, por tanto mi linea sigue estando bien pues numero % 2 es 0 en caso de que sea par, o sea para explicar mi linea
        Devolver False si numero % 2 no es 0, en caso contrario True
        y mi linea es más corta que la tuya por tres caracteres!! 😉

  4. muy bueno el post ilid@n. Esta muy completo este post, estuve incursionando en el tema y he hecho cositas mayores, como conectar el python a una base de datos en postgresql y a visual fox pro. Si te interesa te puedo pasar algunos textos al respecto.
    Saludos

  5. Felicitaciones ilid@n. Me parece muy bueno promover el conocimiento de python de esta forma simple para que llegue a usuarios no tan avanzados, principiantes y otros grupos necesitados de pequeños códigos.
    También puedes contar conmigo para ejemplos de procesar textos, es a lo que me dedico siempre sobre python. Por cierto también puedo ayudarte con ejemplos de procesamiento de imágenes, desde simples hasta otros complejos.
    ¿Podrías decirme si aplicas python en tu centro de trabajo o estudios? (un amigo me ha pedido realizar una encuesta)

    • Sip, aqui se utiliza Python, aunque de manera experimental (es un centro de trabajo), y mas enfocado a la web, te mando un mail para que me contactes

  6. Muy bueno el artículo y sobre todo la idea de hacer llegar las facilidades de este lenguaje bastante popular por cierto y muy potente. Luego deberían seguir con utilizarlos con algún framework como Django o OpenObject, si necesitan ayuda con el tema pues aquí estamos.

        • Pues simple, sennor, el rey del web-side en Cuba, contando tooodos los sitios de wordpress, etc y etc que usan PHP… 🙂 claro, que a los que les gusta experimentar, se cambian a Python, Rubi, etc etc.. y si, dicen que PHP ca en declive, pero tiene que bajar mucha montanna para que los otros lo alcancen

          • Pregunto porque PHP es un señor dragón de recursos 🙂
            Cuando un sitio sobrepasa las 40.000 visitas cada día y está escrito en PHP la web, hay que hacer verdadera magia para que la RAM del servidor no sobrepase los 2GB consumidos.

          • Vaya, solo porque no sea un buen rey, no deja de ser el rey… Si, ya se que posiblemente quede obsoleto, las nuevas tecnologias siempre se imponen.. Y el python viene bien fuerte junto con otros, para destronarlo, pero habra que ver que pasa… PHP ya es un estandar, solo que no cumple tu expectativas, o tu es tu server el que no las cumpe 😉

      • Bueno creo que estamos aquí porque somos curiosos y hasta un poco nerds o no?? Quedarse en la zona de confort no es el mejor método de seguir aprendiendo no??
        Y como dicen PHP «puede ser» el rey (aquí en Cuba si lo creo) de la web sobre todo por la cantidad de CMS que lo utilizan pero no es lo único y ciertamente tampoco creo que sea lo mejor, por ejemplo django tiene su propia implementación de un CMS en python, muy pero muy bueno la verdad, y como la mayoría de lo desarrollado en python súper ligero.

        • es asi, incluso, me gusta su sistema de administracion 🙂 nunca habia visto nada asi..
          Lo importante es siempre probar nuevas tecnologias y metodos, pero no negar lo que predomina, como desarrolladores, se debe estar pendiente a lo que domina el mercado

          • estamos de acuerdo pero igual hay que saber escoger, no porque este de moda tiene que ser mejor, el mundo de nosotros la moda no tiene mucho que ver mas vale la eficiencia, estabilidad, entre otras cosas. Porque si me preguntan nada mejor para programar que el VS pero no por eso lo pone como lo que mas predomina. En fin es hasta cuestión de gusto y tambien de posibilidades creo yo, hay quienes no pueden conseguir documentacion de python y django por ejemplo.

  7. Cada vez que sale una nueva entrega del curso, viene el BishoWolf ese a creerse el mejor: corrigiendo faltas de ortografía y recomendando refinamientos de código que están lejos de un curso para principiantes, o sea, que el único objetivo no es ayudar a los demás, sino demostrar superioridad. En todas las grandes familias siempre hay uno como él, y al resto le toca la tarea de sobrellevarlo. Ilid@n, muy buena tu intención. Felicitaciones por tu paciencia.

    • Si, lamentablemente debo tomar partido al ver un horror ortográfico, así trato de evitar que este sitio se vuelva como cubadebate que el otro día alguien habló del precio de las «sevoyas», que aunque suenen igual no son la misma cosa. Siempre hay quien no le gusta que le critiquen lo mal hecho 🙁
      Por otro lado mi intención al refinar código no es parecer mejor sino alertar que pudo haber sido escrito mejor, pero ya esta discusión fue aclarada en comentarios previos.

      • vamos sennores, que lo mejor que tiene esto es que todos den vias para llegar al mismo resultado, que tiene de malo que critiquen, siempre y cuando sea constructivo, yo lo veo como mas posibilidades, mas caminos para el mismo destino…
        Despues de todo este tipo de debate deberia fomentarse, y recordando siempre que estos post son dirigidos a los novatos en la programacion, puedes dar tus opiniones 🙂 eso no es un problema, asi todos aprendemos

Los comentarios están cerrados.