Aprende Python en 5 días (III)

Ricardo Vega

Ricardo Vega / 17 diciembre 2015

⏰ 5 minutos

Esta es la tercera parte de este minicurso rápido sobre Python. Puedes ver las entradas anteriores aquí: Parte 1 y Parte 2. Hoy vamos a continuar trabajando en lo aprendido y vamos a afianzar los conocimientos adquiridos.

Programación en Python. Parte 3

En el primer ejemplo, vamos a leer una lista, buscar el elemento más grande e imprimirlo por pantalla:

mylist = [3,41,12,9,74,15]
largest = mylist[0]
for value in mylist:
    if value > largest :
        largest = value
print largest

Aunque ya hemos hablado de ellas, creo que es importante volver a resaltar la potencia de las listas en Python. Se denotan por corchetes y los valores van separados por comas. Una lista puede contener otra lista como elemento.

Las listas tienen muchos métodos (¿qué es esto?) útiles como por ejemplo splite que convierte un string delimitado en una lista. Por ejemplo tenemos el string nombre_completo="Ricardo Vega" usando split podemos crear una lista con lista=stringdenombres.split() que sería [Ricardo, Vega].

Manejo de excepciones

El manejo de excepciones es clave en cualquier lenguaje moderno. Además, como vimos en el primer capítulo, es importante su manejo para cumplir con el famoso Zen Python. Vamos a usarlo en un sencillo ejemplo:

Pedimos al usuario que introduzca datos para a continuación escoger el mayor y el menor.

mylist=[]
while True:
    try:
        num = raw_input("Enter a number: [Leave blank to continue]")
        if num == "" : break
        num = int(num)
    except:
        print "Invalid input"
        continue
    mylist.append(num)
if len(mylist) > 0:
    sorted_list = sorted(mylist)
    max = sorted_list[len(sorted_list) - 1]
    min = sorted_list[0]
    print "Maximum is", max
    print "Minimum is", min

Como ves, empezamos a usar funciones algo más complejas en nuestros programas. Para empezar, creamos un ciclo que se repite indefinidamente (bucle infinito) con la sentencia while True y usamos las palabras reservadas break y continue para controlar el bucle. En try ponemos lo que queremos hacer, pero si lo pensamos bien, es posible que el usuario no introduzca un número cuando se lo pedimos, sino, por ejemplo, una palabra. Es ese caso no sería posible hacer la conversión a un entero, por lo que el programa fallaría.

Manejo Excepciones Python

En vez de obtener un fallo general que arruine nuestro programa, vamos a controlar esa posibilidad mediante el manejo de excepciones. Si algún error se da en el bucle try, se entra en except donde, como ves, se imprime por pantalla "Invalid input" y se vuelve a comenzar el bucle desde el principio (es decir, volvemos a empezar).

En el momento que no introduzcamos nada y simplemente presionemos <Enter>, haremos el break que romperá el bucle, yendo a la linea if len(mylist)...

len() nos devuelve la longitud de una lista y sorted() la ordena. Con estas dos cosas en mente, es fácil entender el resto del programa, ¿verdad?

Input / Output : manejo de ficheros

Otro uso muy coriente que debemos manejar con soltura es la escritura y lectura de datos en archivos.

Para abrir un fichero, hacemos uso de open()

archivo = open(file_name [access_mode])

donde file_name es, lógicamente, el nombre del archivo y acces_model es el modo de acceso:

  • r : Archivo de sólo lectura.
  • rb : Archivo de sólo lectura en formato binario.
  • r+ : Abre un archivo para lectura y escritura. El puntero del archivo estará en el principio del archivo.
  • rb+ : Igual que el anterior, pero en formato binario.
  • w : Abre un archivo de sólo escritura, sobrescribiendo el archivo si este no existe.
  • wb : Igual que el anterior, pero en formato binario.
  • w+ : Abre un archivo para lectura y escritura, sobrescribiendo el archivo si este no existe.
  • wb+ : Igual que el anterior, pero en formato binario.

Veamos un ejemplo donde leemos y escribimos en un fichero:

fo = open("file.txt", "w+")
print "Nombre del archivo : ", fo.name
print "Cerrado o no : ", fo.closed
print "Modo de apertura : ", fo.mode
contenido = fo.read()
s = "Hola mundo, visita ricveal.com\n"
print contenido
fo.write(s)
fo.close() #cerramos el archivo abierto

Si te fijas, estamos usando una variable "fo" seguida de un punto y algo parecido a funciones u otras variables. Esto nos mete de lleno en la programación orientada a objetos que tocaremos en el siguiente artículo aunque por adelantarte algo, decirte que fo en realidad es un objeto que tendrás sus métodos (funciones que hacen algo en el objeto) y atributos (pseudo variables dentro del objeto).

En la próxima entrada hablaremos detenidamente de este tema, poniendo varios ejemplos para que entiendas mucho mejor esta filosofía de trabajo. También empezaremos a estructurar nuestros programas mucho mejor para poder crear programas más poderosos y reutilizables, lo que en definitiva nos hará mejores programadores. Y es que ya estamos empezando a llegar al fin de este curso y debemos empezar a rematar detalles, ¿verdad?

Estoy impaciente por conocer que pruebas de concepto o mini-ejercicios estás haciendo por tu cuenta a la vez que sigues este curso. Te animo a emplear los comentarios y las redes sociales para hacerme llegar toda clase de sugerencias, dudas, información...

¡Saludos!

Subscríbete a mi newsletter

Actualmente estoy llevando a cabo algunos cambios en mi Newsletter y no es posible apuntarse 😞

Ver ediciones pasadas