Introducción a Google Colab#
Google Colab es una plataforma en línea que te permite escribir y ejecutar código en Python directamente desde tu navegador. Es una herramienta poderosa y fácil de usar, ideal para aprender a programar.
Nota: Puedes cambiar a idioma inglés de la interfaz dirijiendote en el menú a Ayuda, y luego a Ver en ingles.
##1.1. ¿Qué es una celda? En Google Colab, el código se escribe dentro de celdas. Cada celda puede contener una o varias líneas de código.
##1.2. Cómo ejecutar una celda Ejecutar una celda individual: Haz clic en el ícono de «Play» (un triángulo) a la izquierda de la celda o presiona Shift + Enter.
print("¡Hola, mundo!")
Ejecutar todas las celdas: Puedes ejecutar todas las celdas del notebook en orden haciendo clic en el menú Runtime (Entorno de ejecución) y luego seleccionando Run all (Ejecutar todas).
##1.3. Agregar nuevas celdas Puedes agregar nuevas celdas de código o texto haciendo clic en el botón + Code (Código) o + Text (Texto) en la parte superior de la interfaz. Esto es útil si quieres probar algo nuevo o tomar notas.
##1.4. Guardar tu trabajo Google Colab guarda tu trabajo automáticamente, pero también puedes guardar una copia del notebook en tu Google Drive haciendo clic en File > Save a copy in Drive.
##1.5. Atajos útiles
Ejecutar celda y avanzar a la siguiente: Shift + Enter
Ejecutar celda y quedarse en la misma: Ctrl + Enter
Agregar una celda de código debajo: Alt + Enter
#2. Introducción a python Python es un lenguaje de programación muy popular debido a su simplicidad y poder. Lo primero que haremos es aprender a realizar operaciones básicas y trabajar con variables.
##2.1. Variables y operaciones aritméticas
En programación, una variable es como una caja donde guardamos un valor para usarlo más adelante. En Python, podemos usar el signo = para guardar un valor en una variable.
Por ejemplo ejecuta la siguiente celda (click en el boton de play):
# Guardamos el número 10 en una variable llamada 'a'
a = 10
# Guardamos el número 3 en una variable llamada 'b'
b = 3
# Dentro del código, los comentarios se inician con #
Aquí estamos diciendo que a es igual a 10, y b es igual a 3. El signo = no significa «igual» en el sentido matemático, sino que estamos guardando (o «asignando») el valor en la variable.
Ahora, podemos usar estas variables para hacer operaciones aritméticas como sumar, restar, multiplicar, y dividir:
# Suma
suma = a + b
# Resta
resta = a - b
# Multiplicación
producto = a * b
# División
division = a / b
Otros operadores aritméticos importantes son:
Exponenciación **: Eleva un número a la potencia de otro.
Módulo %: Devuelve el resto de la división.
potencia = a ** b # a elevado a la potencia de b
resto = a % b # Resto de la división de a entre b
##2.2. Mostrando resultados con print()
Usamos la función print()
para mostrar el resultado en pantalla. Las comillas indican que el texto es literal, y la coma , separa el texto y valor de la variable.
print("Suma:", suma)
Aquí, la palabra «Suma:» es un texto (o cadena de texto) que queremos mostrar. Las comillas alrededor del texto son necesarias para que Python sepa que es texto y no una variable o un número. La coma , se usa para separar el texto del valor de la variable suma que queremos mostrar.
Probemos esto con todas nuestras operaciones:
print("Suma:", suma)
print("Resta:", resta)
print("Producto:", producto)
print("División:", division)
##2.3 Operador += El operador += es una forma abreviada de sumar un valor a una variable existente. Por ejemplo, en lugar de escribir:
suma = suma + 10
Podemos escribirlo de forma más compacta como:
suma += 10 # Suma 10 al valor actual de la variable 'suma'
##2.4 Operadores lógicos Los operadores lógicos se usan para comparar valores y combinar condiciones. Los resultados de estas comparaciones siempre serán True (verdadero) o False (falso), que son valores booleanos.
True: Representa algo que es verdadero.
False: Representa algo que es falso.
Estos valores son muy útiles para tomar decisiones en tu código a través de estructuras de control como if, while, que más adelante vas a estudiar.
Operadores de comparación:
==: Compara si dos valores son iguales.
comparacion = (a == b) # Devuelve False porque 10 no es igual a 3
!=: Compara si dos valores son diferentes.
comparacion = (a != b) # Devuelve True porque 10 es diferente de 3
Operadores de Orden
<, >, >=, <=: Comparan si un valor es mayor, menor, mayor o igual, o menor o igual que otro. \
and: Devuelve True si ambas condiciones son verdaderas. \
or: Devuelve True si al menos una condición es verdadera. \
not: Invierte el valor lógico. \
Ejemplo:
a = 10
b = 5
resultado = (a > 5) and (b < 10) # Devuelve True porque ambas condiciones son verdaderas
print(resultado)
#3. Tipos de datos ##3.1. Tipos de datos básicos En Python, los valores que guardamos en las variables pueden ser de diferentes tipos. Por ejemplo:
Números enteros (int), como 5 o -3.
Números decimales (float), como 5.75 o -2.0.
Cadenas de texto (str), como «Hola, Python».
Podemos verificar el tipo de dato de una variable con la función type():
numero_entero = 5
print(type(numero_entero)) # Esto mostrará <class 'int'>
#4. Estructuras básicas ##4.1. Listas Una lista es una colección de valores. En Python, se representan con corchetes []:
calificaciones = [80, 90, 75, 85, 60, 75, 95]
Índices: Cada elemento en una lista tiene una posición llamada índice. El primer elemento tiene el índice 0, el segundo 1, y así sucesivamente. Python también permite usar índices negativos para acceder a los elementos desde el final de la lista:
print(calificaciones[0]) # Muestra 80, el primer elemento
print(calificaciones[-1]) # Muestra 95, el último elemento
##4.2. Diccionarios Un diccionario es una colección de pares clave-valor. Es útil cuando queremos contar frecuencias o asociar valores específicos.
# Definimos un diccionario para contar frecuencias
frecuencias = {"a": 1, "b": 2}
# Accedemos a un valor usando su clave
print(frecuencias["a"]) # Muestra 1
#5. Funciones comunes y métodos Una función es como una pequeña «máquina» que realiza una tarea específica. Vamos a ver algunas funciones comunes:
len()
: Devuelve la cantidad de elementos en una lista o cadena.
max()
: Devuelve el valor máximo de una lista o conjunto de datos.
sorted()
: Ordena los elementos de una lista.
Ejemplo:
print(len(calificaciones)) # Muestra 5, que es el número de elementos
print(max(calificaciones)) # Muestra 95, que es el valor máximo
print(sorted(calificaciones)) # Muestra la lista ordenada [60, 75, 80, 90, 95]
Un método es una función que está asociada a un objeto, como una lista o un diccionario.
Por ejemplo, el método .get() en un diccionario se usa para obtener el valor asociado a una clave, y si la clave no existe, se puede devolver un valor predeterminado.
valor = frecuencias.get("c", 0) # Devuelve 0 porque "c" no existe en el diccionario
print(valor) # Muestra 0
#6. Estructuras de control de flujo ##6.1. Condicionales (if, else) Los condicionales permiten que el programa tome decisiones basadas en ciertas condiciones:
calificacion = 85 #Prueba cambiar este valor y ejecuta
if calificacion >= 70: #O prueba cambiar este valor
print("El estudiante aprobó.")
else:
print("El estudiante reprobó.")
Sintaxis: La estructura if sigue con una condición. Si la condición es True
, se ejecuta el código dentro del bloque if. Si no, se ejecuta el bloque else.
Indentación: El código dentro de un if o else debe estar indentado, lo que significa que debe moverse hacia la derecha con espacios o tabulaciones. Python usa la indentación para definir bloques de código.
##6.2. Bucles (for, while) Los bucles permiten repetir acciones varias veces.
Bucle for
:
El bucle for
recorre una secuencia de valores (como una lista) y ejecuta un bloque de código para cada valor. Aquí tienes un ejemplo sencillo:
# Lista de colores
colores = ["rojo", "azul", "verde"]
# Usamos un bucle for para recorrer la lista y mostrar cada color
for color in colores:
print("Color:", color)
Explicación paso a paso:
for color in colores: Le decimos a Python que recorra cada elemento de la lista colores y lo almacene temporalmente en la variable color. \
print(«Color:», color): Para cada iteración, se muestra el valor actual de color. \
Bucle while
:
Repite un bloque de código mientras una condición sea True
.
Es importante asegurarse de que la condición eventualmente se vuelva False
para evitar un bucle infinito.
contador = 0
while contador < 5:
print("Contador:", contador)
contador += 1 # Es necesario actualizar el contador para evitar un bucle infinito
Si no actualizas la condición dentro de un bucle while, este seguirá ejecutándose indefinidamente, lo que se conoce como un bucle infinito. Para detener manualmente un bucle infinito en Google Colab, puedes hacer clic en «Interrumpir ejecución» en la parte superior de la página.
#7. Ejemplo práctico: cálculo de la media, mediana y moda ##7.1. Medidas de tendencia central Antes de pasar al código, repasemos qué son las medidas de tendencia central.
Media: Es el promedio de los datos. Se calcula sumando todos los valores y dividiendo por la cantidad de valores.
Mediana: Es el valor que se encuentra en el centro de los datos cuando están ordenados. Si la cantidad de datos es par, la mediana es el promedio de los dos valores centrales.
Moda: Es el valor que aparece más veces en el conjunto de datos.
Ahora, veamos cómo calcular estas medidas en Python.
##7.2 Cálculo de la media Vamos a sumar todas las calificaciones y dividirlas por la cantidad total de calificaciones.
# Inicializamos la suma en 0
suma = 0
# Recorremos la lista de calificaciones con un bucle for
for calificacion in calificaciones:
# Sumar cada calificación al total
suma += calificacion
# Calculamos la media dividiendo la suma total por la cantidad de elementos
media = suma / len(calificaciones)
# Mostramos la media
print("La media es:", media)
Paso a paso:
Inicializamos la variable suma en 0.
Usamos un bucle for para recorrer cada calificación y sumarla a suma.
Calculamos la media dividiendo la suma total por la cantidad de elementos en la lista (usando len()).
##7.3. Cálculo de la mediana ###Explicación del operador // (división Entera) En Python, el operador // se utiliza para realizar división entera, lo que significa que el resultado de la división se redondea hacia abajo, descartando cualquier parte decimal. Esto es útil cuando necesitamos trabajar con índices o posiciones en una lista, ya que estas siempre deben ser enteros.
En el caso del cálculo de la mediana, necesitamos encontrar la posición central de la lista, que está ordenada. Dado que los índices en Python son enteros, usamos la división entera para obtener una posición válida.
Por qué usamos // en el cálculo de la mediana: Cuando tenemos una lista de longitud impar, el valor central se encuentra en la posición n // 2. Usamos la división entera para asegurarnos de que obtenemos un índice entero que podemos usar para acceder al elemento central.
En el caso de que la lista tenga una longitud par, debemos promediar los dos valores centrales. La división entera nos asegura que obtenemos los índices de esos valores correctamente.
Primero debemos ordenar las calificaciones. Luego, encontramos el valor central.
# Ordenamos la lista de calificaciones
calificaciones_ordenadas = sorted(calificaciones)
# Calculamos la cantidad de elementos en la lista
n = len(calificaciones_ordenadas)
# Si el número de elementos es impar, tomamos el valor del medio
if n % 2 != 0:
# Usamos la división entera // para obtener el índice del valor central
mediana = calificaciones_ordenadas[n // 2]
else:
# Si es par, tomamos los dos valores centrales y calculamos su promedio
mediana = (calificaciones_ordenadas[n // 2 - 1] + calificaciones_ordenadas[n // 2]) / 2
# Mostramos la mediana
print("La mediana es:", mediana)
Explicación paso a paso:
Usamos sorted()
para ordenar la lista.
Calculamos la cantidad de elementos usando len()
.
Si el número de elementos es impar, tomamos el valor en la posición n // 2, que es el valor central.
Si es par, promediamos los dos valores centrales usando los índices n // 2 - 1 y n // 2.
En ambos casos, el uso de // asegura que trabajamos con índices enteros, que son necesarios para acceder a los elementos de la lista.
##7.4. Cálculo de la moda La moda es el valor que aparece más veces en el conjunto de datos.
# Inicializamos un diccionario vacío para contar frecuencias
frecuencias = {}
# Recorremos la lista de calificaciones
for calificacion in calificaciones:
# Si la calificación ya está en el diccionario, aumentamos su frecuencia
if calificacion in frecuencias:
frecuencias[calificacion] += 1
else:
# Si no está, la añadimos con una frecuencia de 1
frecuencias[calificacion] = 1
# Buscamos la calificación con mayor frecuencia
moda = max(frecuencias, key=frecuencias.get)
# Mostramos la moda
print("La moda es:", moda)
Paso a paso:
Inicializamos un diccionario vacío para contar cuántas veces aparece cada calificación. \
Usamos un bucle for para contar la frecuencia de cada calificación. \
Encontramos la moda usando max()
con el método .get()
: \
El diccionario creado luciría así frecuencias = {80: 1, 90: 1, 75: 2, 60: 1, 85:1, 95: 1} \
El parámetro key en la función
max()
nos permite especificar qué función usar para determinar el «máximo». \En este caso, frecuencias.get es una función que obtiene el valor asociado a una clave en el diccionario. \
Por ejemplo, si llamas frecuencias.get(80), te devolverá 1, que es la frecuencia de la calificación 80. \
Entonces, lo que está pasando aquí es que
max()
está buscando la clave del diccionario frecuencias que tenga el mayor valor (que es la frecuencia).
#8. Sección de ejercicios: Práctica de python
##Funciones input() y float()
input()
La función input() se utiliza para pedir información al usuario mientras el programa está en ejecución. Cuando usamos input(), el programa se detiene y espera a que el usuario ingrese algún valor. Este valor siempre se recibe como un texto (string).
Por ejemplo:
nombre = input("Introduce tu nombre: ")
print("Hola", nombre)
En este ejemplo, el programa solicitará al usuario que ingrese su nombre y luego lo imprimirá en pantalla.
float()
La función float()
se utiliza para convertir un valor de texto (string) en un número decimal (flotante). Es útil cuando queremos hacer cálculos con números que el usuario ha ingresado a través de input()
.
Por ejemplo:
numero = float(input("Introduce un número decimal: "))
print("Tu número es:", numero)
##Ejercicio 1: Cálculo del índice de masa corporal (IMC) Supon que te interesa calcular el Índice de Masa Corporal (IMC) de una persona.
Escribe un programa que reciba como entrada el peso (en kilogramos) y la altura (en metros), y luego calcule su IMC usando la fórmula:
Además, si el IMC es mayor o igual a 25, el programa debe indicar que la persona tiene sobrepeso; de lo contrario, debe indicar que tiene peso saludable.
Instrucciones: Completa el siguiente código.
# Pide al usuario que ingrese su peso y altura
peso = _____(input("Introduce tu peso en kilogramos: "))
altura = float(input("Introduce tu altura en metros: "))
# Calcula el IMC
imc = _____
# Muestra el IMC y verifica si tiene sobrepeso o no
print("Tu IMC es:", imc)
if :
print("Tienes sobrepeso.")
else:
_____("Tienes un peso saludable.")
##Ejercicio 2: Clasificación de números Suponte que necesitas clasificar una lista de números obtenidos en un experimento (e.g. lanzar dados) como pares o impares. Escribe un programa que recorra una lista de números y muestre si cada uno es par o impar.
Lista de números: [6, 7, 3, 11, 9, 10]
Instrucciones: Completa el siguiente código para clasificar los números como pares o impares.
numeros = [_, 7, 3, 1_, 9, _0]
# Recorre la lista de números y clasifícalos como par o impar
for numero in _______:
if : # Completa la condición
print(f"{numero} es par.")
____:
print(f"{numero} es _____.")
##Ejercicio 3: Predicción de temperatura
Estás trabajando con un modelo simple para predecir la temperatura en una región montañosa en los próximos días.
Sabes que la temperatura disminuirá 2 grados cada día.
Usa un bucle for para mostrar la temperatura esperada para los próximos 5 días, comenzando desde una temperatura inicial de 25°C.
Instrucciones: Completa el siguiente código.
# Temperatura inicial
temperatura = __
# Muestra la temperatura esperada para los próximos 5 días
for __ in range(1, 6):
print(f"Día {dia}: {temperatura}°C")
temperatura -= _ # Completa cómo disminuye la temperatura
El uso de range(1, 6)
en Python crea una secuencia de números que comienza en 1 y termina en 5. Aunque el segundo argumento es 6, el número 6 no está incluido en la secuencia.
¿Cómo funciona? \
range(start, stop)
: La función range()
genera una secuencia de números.
start: El número en el que comienza la secuencia (en este caso, 1).
stop: El número en el que la secuencia termina, pero este valor no está incluido. La secuencia termina justo antes de llegar a este número (en este caso, 6, pero solo llega hasta el 5). \
Entonces, range(1, 6)
genera la secuencia de números: 1, 2, 3, 4, 5.
##Ejercicio 4: Modelo de crecimiento poblacional Estás modelando el crecimiento de una población de bacterias. Sabes que la población inicial es de 100 bacterias y que la población se duplica cada hora. Escribe un programa desde cero que use un bucle while para mostrar el crecimiento de la población durante las primeras 5 horas.
Instrucciones paso a paso:
Paso 1: Inicializa la población y el contador de horas
La población inicial es de 100 bacterias. Define una variable llamada poblacion para almacenar este valor. Define otra variable llamada hora para representar el tiempo. Comienza con la hora 1.
Paso 2: Configura el bucle while
Usa un bucle while para ejecutar el programa durante las primeras 5 horas. El bucle debe ejecutarse mientras la variable hora sea menor o igual a 5.
Paso 3: Dentro del bucle, muestra la hora actual y la población
En cada iteración del bucle, imprime la hora y la población actual. Luego, duplica la población multiplicando la variable poblacion por 2.
Paso 4: Actualiza el contador de horas
No olvides aumentar el valor de hora en 1 al final de cada iteración para avanzar en el tiempo.
Pistas:
Usa print()
para mostrar la hora y la población en cada iteración.
El bucle se ejecutará hasta que hora sea mayor que 5.
Para la condición del bucle, debes asegurarte de que el bucle siga ejecutándose mientras hora sea menor o igual a 5.
Para duplicar la población, simplemente multiplica la variable poblacion por 2.
Recuerda incrementar hora en cada iteración, de lo contrario el bucle no terminará.
# Escribe el código desde cero aquí:
# Inicializa la población y el contador de horas
# Usa un bucle while para mostrar el crecimiento de las bacterias
#9. Conclusión ¡Felicidades por completar tu primer notebook de introducción a python!
En este recorrido, hemos aprendido los fundamentos esenciales del lenguaje, comenzando con la definición de variables y operaciones aritméticas, pasando por las estructuras de datos básicas como listas y diccionarios, y explorando las estructuras de control como condicionales y bucles. Además, hemos puesto en práctica estos conceptos para calcular medidas de tendencia central como la media, mediana y moda. \
Estos fundamentos son la base sobre la que construirás habilidades más avanzadas en computación científica. Recuerda que la clave está en practicar constantemente, entender cada concepto a tu propio ritmo, y no tener miedo de experimentar con el código. \
En los próximos notebooks, profundizaremos en temas más avanzados que te permitirán resolver problemas reales utilizando Python de manera efectiva. ¡Sigue adelante!