El material de esta práctica está basado en el curso "Aprendiendo Python" de ATGenomics. Son una startup mexicana especializada en bioinformática, biología computacional e investigación biomédica y clínica. Imparten varios talleres sobre llamado de variantes, metabarcoding, etc. Pueden encontrar más sobre ellos en http://atgenomics.com/
y sus redes sociales.
Python es un lenguaje de programación multipropósito, interpretado, interactivo, orientado a objetos y de alto nivel.
A través del intérprete
python
, también llamada python shell (>>>)python hello.py
Utilizando "Interactive Python"
jupyter notebook
print("Hello world!")
pip
El día de hoy aprenderemos los siguientes conceptos:
En Python, todo es un objeto. Así como en el español cada cosa/chunche/objeto es un sustantivo, designan todos los cosos que nos rodean, en Python todo es un objeto, un sustantivo.
Cada objeto tiene atributos y clases. Los diferentes modelos de carro pertenecen a la clase "automovil", y tienen diferentes atributos como el color, el tamaño, el número de puertas, potencia del motor, etc. De la misma manera las personas pertenecen a la clase "humanos" con diferentes atributos.
En Python, las variables hacen referencia a objetos y cualquier variable puede referencias cualquier objeto.
Cada variable, tiene un nombre y un valor.
Esto se llama, declar variables.
Podemos utilizar varios estilos para nombrar una variable.
edad = 1
Edad = 2
eDad = 3
EDAD = 4
e_d_a_d = 5
_edad = 6
edad_ = 7
_EDAD_ = 8
__edad__ = 9
MiEdad = 10
MIEDAD = 11
miEdad = 12
mi_edad = 13
Mi_Edad = 14
nombre = "Marisol"
print(nombre)
print(edad, Edad, eDad, EDAD, e_d_a_d, _edad, edad_)
print(_EDAD_, __edad__, MiEdad, MIEDAD, miEdad, mi_edad, Mi_Edad)
Estos formatos están prohibidos:
3edad = 12
e-d-a-d = 13
mi.edad = 14
sol = "Marisol"
nombre = sol
print(nombre)
name02 = "sol"
Algunas consideraciones que tener en mente para nombrar variables:
Hay algunas palabras que están reservadas y no se deben de utilizar para nombrar variables
# Podemos agregar comentarios a nuestro código
# Debe de haber un espacio antes y después de la asignación con =
# varESPACIO=ESPACIOvalue
"""
O bien podemos agregar múltiples líneas,
también llamadas docstring.
Pues bien, yo necesito decirte que te quiero
Decirte que te adoro con todo el corazón
Que es mucho lo que sufro, que es mucho lo que lloro
Que ya no puedo tanto y al grito en que te imploro
Te imploro y te hablo en nombre de mi última ilusión
"""
a = 24
type(a)
print(a)
a = 28304993837383839393
print(a)
b = 3.14
type(b)
# Operador Suma
a = 3
b = 2
c = a + b
print(c)
print(5 + 6)
# Operador Resta
a = 4
b = 7
c = a - b
print(c)
# Operador Negación
a = 5
b = -a
c = b - 4
print(b)
print(c)
# Operador Multiplicación
a = 2
b = 6
c = a * b
print(c)
# Operador Exponente
a = 2
b = 4
c = a ** b
print(c)
# Operador división
a = 3.5
b = 4
c = 2
d = a / c
e = b / c
print(d)
print(e)
# Operador división entera
f = a // c
g = b // c
print(f)
print(g)
Tip:
Se puede convertir un float a int con la función int()
y de int a float con float()
. Cuando se mezclan tipos de números, Python convierte todos los operandos al tipo más complejo de entre los tipos de los operandos.
# Operador Módulo
a = 7 % 2
b = 8 % 3
print(a)
print(b)
a = 5.6
print(a)
print(int(a))
Orden de precedencia
El orden de precedencia de ejecución de los operadores aritméticos es:
**
-
*
, /
, //
, %
+
, -
Funciones y métodos integradas (built-in) que utilizaremos
# Nos indica el tipo de un objeto
type()
# Obtiene el número de elementos de un objeto
len()
# Método que nos muestra la ayuda de funciones, métodos, módulos
help()
# Regresa una versión en cadena (string) de un objeto
str()
# Regresa una versión en número (int) de un objeto
int()
# Regresa una secuencia inmutable de números entre un rango de números enteros.
range()
number = "10"
type(number)
Tip: Para diferenciar entre método y funcion, generalmente la mayoría sigue la siguiente sintaxis: function()
y something.method()
.
Los métodos son mejores cuando se aplican a ciertor objetos. Las funciones son mejores cuando se aplican a múltiples objetos.
Existen más funciones built-in disponibles en: https://docs.python.org/3/library/functions.html
Las cadenas no son más que texto encerrado entre comillas simples (‘cadena’
) o dobles (“cadena”
). Dentro de las comillas se pueden añadir caracteres especiales escapándolos con \
, como \n
, el carácter de nueva línea, o \t
, el de tabulación.
a = "uno"
b = "dos"
c = "tres"
d = a + b + c
print(a)
print(b)
print(c)
print(d)
print(a + " " + b + " " + c)
print(a + "\t" + b + "\t" + c)
number = "3.14"
print(number)
type(number)
float(number)
type(float(number))
Slicing (:)
texto = "Tres tristes tigres tragaban trigo en un trigal"
print(texto)
Tres tristes tigres tragaban trigo en un trigal
texto[0:3]
'Tre'
texto[2:]
'es tristes tigres tragaban trigo en un trigal'
index
texto[8]
's'
palabra = "GenomicaFC"
palabra[0:9]
'GenomicaF'
palabra[::-1]
Una variable de tipo booleano sólo puede tener dos valores: True
(cierto) y False
(falso). Estos
valores son especialmente importantes para las expresiones condicionales y los bucles, como veremos más adelante.
r = True
s = False
test_and = r and s
test_or = r or s
test_not = not r
print(test_and)
print(test_or)
print(test_not)
# == Igual que
r = 4 == 5
print(r)
# != Distinto que
r = 5 != 3
print(r)
# < Menor que
r = 3 < 6
print(r)
nombre = "Marisol" == "Sol"
print(nombre)
# > Mayor que
r = 6 > 9
print(r)
# <= Menor o igual que
r = 9 <= 2
print(r)
# >= Mayor o igual que
r = 5 >= 5
print(r)
En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Las estructuras que se ejecutan de acuerdo a condiciones se les denomina condicionales. En Python definen mediante el uso de tres palabras claves reservadas: if
(si), elif
(sino, si) y else
. (sino).
Advertencia: En Python no existen inicios o finales explícitos para sus comandos u ordenes, tampoco se utilizan llaves con las que delimitar donde empieza o termina el código que forma parte de un comando u orden. Los únicos delimitadores existentes son dos puntos ( : ) y la indentación (“sangrado”) del código. Se recomienda usar un sólo formato, ya sea tabuladores o espacios, siempre en la misma proporcion en todo el documentos.
if
a = 12
if (a < 20) == True:
print('a es menor que 20')
a = 12
if a < 20:
print('a es menor que 20')
a = 12
if a > 20:
print('a es menor que 20')
if..else
# Si el semáforo esta en verde, cruzar la calle. Sino, esperate.
semaforo = True
verde = True
if semaforo == verde:
print("Cruzar la calle")
else:
print("Espera")
Cruzar la calle
semaforo = True
verde = False
if semaforo == verde:
print("Cruzar la calle")
else:
print("Espera")
Espera
if..elif..else
# Si gasto hasta $100, pago con dinero en efectivo
# Si gasto más de $100 pero menos de $300, pago con tarjeta de débito
# Si no, pago con tarjeta de crédito.
compra = 325
if compra <= 100:
print("Pago en efectivo")
elif compra > 100 and compra < 300:
print("Pago con tarjeta de débito")
else:
print("Pago con tarjeta de crédito")
# Python permite dos operadores relacionales directos sin utilizar operador lógico.
compra = 301
if compra <= 100:
print("Pago en efectivo")
elif 300 > compra > 100:
print("Pago con tarjeta de débito")
else:
print("Pago con tarjeta de crédito")