Curso Python para GUTL (VII)

Hola, GUTL. Seguimos con el curso de Python, y ya podemos decir que hemos avanzado enormemente, ya somos capaces de hacer muchas cosas. Aunque tenemos que reconocer que la limitación de un programador es su imaginación y creatividad, después de todo, programar es encontrar la manera de dividir un problema en pedacitos y pedacitos hasta que se pueda resolver con operaciones simples.

El post pasado trató de funciones, cómo crearlas y usarlas, pero estoy seguro que olvidamos algo importante…. muy importante: tratar con los errores. En este caso me refiero a los errores del usuario, como cuando estamos esperando por un número y nos dan letras o no nos dan nada, normalmente ahí el script devuelve un error y termina inmediatamente con su ejecución.

Veamos un ejemplo:

z = int(input(dame un numero)) 

si el usuario nos da números, todo bien, pero si nos da letras… todo mal. 🙁

¿Qué hacemos entonces?

Hay muchas formas de lidiar con esto, usamos nuestra gran imaginación y pensamos: podemos hacer un while para que mientras el usuario no dé un número, diga: «dame un número», y vuelva a pedir la variable z. Aunque esto es una forma arcaica de lidiar con los errores, es una buena forma de aprender un poco de lógica de programación (algoritmos), les recomiendo que lo hagan antes de seguir con mi propuesta…

Mi propuesta (si ya hicieron lo del while):

Yo les propongo que hagan una función que evalúe si el usuario entra número o letra con un par de cosas nuevas que traigo hoy.. el try: y el except:  … básicamente significan intentar: y excepción:  es decir, trato de hacer algo: y si no funciona, algo más:   …… entonces, ¿¿¿cómo procedemos???

def es_numero():
    while True:
      try:
         z = int(input(‘¿En que anno naciste?: ‘))
         if x > 0:
              return z
      except:
             print (‘hey, el anno tiene que ser un numero mayor que cero, por favor’)

Bien, no está muy complicado, ¿verdad?

Nombramos y creamos nuestra función def es_numero(): y creamos un loop. Más adelante, veremos para qué nos sirve este, entonces intentamos recoger un número, si no es un número o no es mayor que 0 (cero), hace el except, que sería print (‘hey, el anno tiene que ser un numero mayor que cero, por favor’), y como esto ya se ha intentado.. dentro de nuestro while loop, se repite, pero si es un número y es mayor que cero, return z nos devuelve el valor.. while True, siempre se va a cumplir, es un loop infinito, la única forma que tenemos aquí para salir es el return z, que rompe el bucle. Les aconsejo que prueben sin el bucle while, verán que si el usuario se equivoca se muestra el mensaje de error, pero no le pregunta de nuevo: ¿En que anno naciste? Y termina la función, ¿no es eso lo que queremos…?

Entonces, sip, eso es todo, aquí tenemos una función a prueba de balas para recoger un número mayor que cero.. pero…¿cómo la usamos?

anno = es_numero()

y luego seguimos el código normal, con todo lo que queramos hacer…

Recuerda, hay infinitas maneras de utilizar tu conocimiento, esto fue solo un ejemplo, la experimentación lo es todo aquí… Deja en los comentarios tu idea de hacerlo más óptimo.

¿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 15 comentarios

  1. Ilid@n te hice llegar por el correo documentacion para seguir ampliando estas entregas.
    SI no te llegan avisame por el correo para volvertelo a mandar.
    Saludos

  2. año = es_numero()

    Aclarar que esto funciona en Python 3 porque usa unicode para los nombres internos, en Python 2.x esto da error, hay que usar anno o una sola ene y arriesgarte a las risitas del resto de la tropa. 🙂

        • Claro que no pondría «ano», sino «anno» para evitar que muchos tengan que cargar frijoles si se riega el «numerito» entre la tropa… 😀

          • jajaja, sin problemas, tengo la conexion un poquito pesadita hoy… hacedle los cambios correspondientes.. 🙂

  3. Hola a todos, muy bien por ustedes de brindar esta posibilidad. Miren me encuentro aprendiendo a desarrollar en python, cuento con python 2.5. Me encuentro desarrollando una pequeña aplicación de escritorio y quisiera saber si existe Qt para python en windows?, y… si lo tienen si lo pueden compartir.
    saludos a todos

  4. Gracias hermano, dime no tienes las python 3 por ahi?. Ahhh y compartirte el PyGTK si crees que es buenos, desde tu experiencia.

Los comentarios están cerrados.