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 mundoprint(...) 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 =:
- 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 definidoalturaantes. - Crea un programita donde definas nombre y apellido y luego imprimas un mensaje que los combine, por ejemplo: “Hola, me llamo Alicia Pérez”.
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
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): textoint(integer): números enterosfloat: números decimalesbool(boolean): valores lógicos (TrueoFalse)
nombre = "Alicia" # str
edad = 20 # int
altura = 1.68 # float
es_biologa = True # boolComentarios
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.68Un 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.
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
- Escribe y ejecuta un script
hola.pyque muestre “Hola, bióloga/o” (o un saludo con tu propio nombre). - Crea dos variables,
nombreyespecie_favorita, e imprime un mensaje que las combine usando una f-string. - Escribe un script
contar_lineas.pyque abraspecies_observations.csvy muestre cuántas líneas tiene. - Escribe un script que cuente cuántas secuencias hay en
sequences.fasta, recorriendo el archivo línea a línea con un buclefor linea in f:y comprobando si cada línea empieza por>conlinea.startswith(">"). Compara el resultado con el que obtuviste en el módulo 5 usandogrep -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}")