Introducción a la programación y Python

De la terminal a Python

Hasta ahora le has dado órdenes a la terminal una a una (o encadenadas en pipelines) y hemos visto como crear pequeños scripts en bash. Sin embargo, para hacer análisis de datos más complejos, bash se queda corto: no tiene tipos de datos más allá de cadenas y números, no tiene librerías para trabajar con datos biológicos o realizar análisis estadísticos. Por ello, para poder hacer análisis más complejos, vamos a aprender a usar un lenguaje de programación de propósito general: Python.

Python es una buena opción para este curso porque:

  • sintaxis es relativamente sencilla y legible.
  • es gratuito y multiplataforma.
  • es uno de los lenguajes de programación más utilizados, especialmente en biología y otras disciplinas científicas.
  • cuenta con una comunidad muy amplia y numerosas librerías para trabajar con datos, estadística, visualización y bioinformática.

Tu primer script

Abre gedit, escribe esto, y guárdalo como hola.py:

print("Hola mundo")

Ejecútalo desde la terminal, en el mismo directorio donde lo guardaste:

~$ python3 hola.py
Hola mundo

print(...) muestra un texto por pantalla. python3 hola.py le dice a la terminal: “ejecuta el intérprete de Python 3 sobre este archivo” — el mismo patrón que ./script.sh del módulo anterior, pero para Python en vez de para bash.

Variables

Una variable es un nombre que apunta a un valor (la etiqueta de una caja que contiene un dato).

En Python el valor de una variable se lo asigna directamente con el operador =:

TipCuestión
  • Prueba a cambiar los valores de las variables y vuelve a ejecutar el script.
  • ¿Qué pasa si intentas imprimir una variable que no has definido? Intenta llamar a print(altura) sin haber definido altura antes.
  • Crea un programita donde definas nombre y apellido y luego imprimas un mensaje que los combine, por ejemplo: “Hola, me llamo Alicia Pérez”.
Nota

f"..." es una f-string: una cadena de texto donde {variable} se sustituye por el valor de esa variable. Es la forma más cómoda de construir un mensaje combinando texto fijo con datos.

Las variables no son fijas

Las variables en Python pueden cambiar su valor durante la ejecución del programa. Por ejemplo:

Las variables no son cadenas de texto

TipCuestión

Arrega el siguiente código para que imprima correctamente el mensaje “Alicia tiene 20 años”:

nombre = "Alicia"
edad = 20
print("Se llama: ", "nombre")
print(f"Tienee {"edad"} años.")

Tipos de datos

En Python, las variables pueden contener diferentes tipos de datos. Algunos de los más comunes son:

  • str (string): texto
  • int (integer): números enteros
  • float: números decimales
  • bool (boolean): valores lógicos (True o False)
nombre = "Alicia"  # str
edad = 20          # int
altura = 1.68      # float
es_biologa = True  # bool

Comentarios

Cualquier línea que empiece por # es un comentario: Python la ignora por completo. Se usa para explicar el porqué de una decisión, no el qué (el código ya dice el qué):

# la altura se guarda en metros, no en centímetros
altura_m = 1.68

Un script real: contar líneas de un archivo

Vas a escribir un script que abra species_observations.csv y cuente cuántas líneas tiene — el equivalente en Python de wc -l del módulo 3:

with open("species_observations.csv") as f:
    lineas = f.readlines()

print(f"El archivo tiene {len(lineas)} lineas.")
~$ python3 contar_lineas.py
El archivo tiene 6 lineas.

open("...") abre el archivo; with ... as f: es una construcción que además se encarga de cerrarlo automáticamente al salir del bloque indentado, aunque ocurra un error a mitad de la lectura (volverás sobre open con más detalle en el módulo 10). f.readlines() devuelve una lista con una línea de texto por elemento, y len(...) cuenta cuántos elementos tiene esa lista.

Nota

Fíjate en la indentación: la línea lineas = f.readlines() empieza con espacios porque está dentro del bloque with. En Python la indentación no es un detalle de estilo — es la sintaxis que marca qué instrucciones pertenecen a cada bloque. Usa siempre 4 espacios (no tabulaciones) y sé consistente.

Ejercicios

  1. Escribe y ejecuta un script hola.py que muestre “Hola, bióloga/o” (o un saludo con tu propio nombre).
  2. Crea dos variables, nombre y especie_favorita, e imprime un mensaje que las combine usando una f-string.
  3. Escribe un script contar_lineas.py que abra species_observations.csv y muestre cuántas líneas tiene.
  4. Escribe un script que cuente cuántas secuencias hay en sequences.fasta, recorriendo el archivo línea a línea con un bucle for linea in f: y comprobando si cada línea empieza por > con linea.startswith(">"). Compara el resultado con el que obtuviste en el módulo 5 usando grep -c "^>".

Soluciones

print("Hola, bióloga/o")   
nombre = "Alicia"
especie_favorita = "Quercus robur"
print(f"A {nombre} le gusta {especie_favorita}")
with open("species_observations.csv") as f:
    lineas = f.readlines()
print(f"El archivo tiene {len(lineas)} lineas.")
contador = 0
with open("sequences.fasta") as f:
    for linea in f:
        if linea.startswith(">"):
            contador = contador + 1
print(f"Numero de secuencias: {contador}")