Introducción a Python Básico
¿Qué es Python?
Python es un lenguaje de programación de alto nivel, interpretado y de propósito general. Es conocido por su sintaxis clara y legible, lo que lo hace ideal para principiantes. Se utiliza en desarrollo web, ciencia de datos, inteligencia artificial, automatización y más.
Entornos de desarrollo
Para programar en Python puedes utilizar:
- IDLE: El entorno básico que viene con Python
- Visual Studio Code: Editor ligero y potente
- Jupyter Notebook: Ideal para ciencia de datos
- PyCharm: IDE completo para desarrollo profesional
Primer programa: Hola Mundo
El programa más simple en Python es el clásico "Hola Mundo":
# Esto es un comentario en Python
print("¡Hola, Mundo!")
print("Bienvenidos al curso de Python")
La función print() se utiliza para mostrar mensajes en la pantalla.
Compilación vs Interpretación
Python es un lenguaje interpretado, lo que significa que el código se ejecuta línea por línea por un intérprete, a diferencia de los lenguajes compilados que se traducen completamente a código máquina antes de ejecutarse.
Ejercicio Práctico
Escribe un programa que muestre un mensaje de bienvenida al curso y tu nombre.
Tipos de datos y variables Básico
Tipos de datos básicos
Python tiene varios tipos de datos integrados:
- int (números enteros): 5, -3, 1000
- float (números decimales): 3.14, -0.5, 2.0
- str (cadenas de texto): "Hola", 'Python'
- bool (valores booleanos): True, False
Variables
Una variable es un espacio en la memoria donde podemos almacenar información. En Python, las variables se crean cuando se les asigna un valor por primera vez.
# Ejemplos de variables
nombre = "Ana"
edad = 25
altura = 1.68
es_estudiante = True
print("Nombre:", nombre)
print("Edad:", edad)
print("Altura:", altura)
print("¿Es estudiante?", es_estudiante)
Conversión entre tipos
Podemos convertir entre diferentes tipos de datos usando funciones como int(), float(), str() y bool().
# Conversión entre tipos
numero_texto = "10"
numero_entero = int(numero_texto)
print("Número como texto:", numero_texto)
print("Número como entero:", numero_entero)
print("Suma:", numero_entero + 5)
Ejercicio Práctico
Crea variables para almacenar tu nombre, edad, altura y si eres estudiante. Luego muestra un mensaje que combine estas variables.
Operadores Básico
Operadores aritméticos
Python incluye los operadores aritméticos básicos:
- + : Suma
- - : Resta
- * : Multiplicación
- / : División
- // : División entera
- % : Módulo (resto de la división)
- ** : Exponente
# Ejemplos de operadores aritméticos
a = 10
b = 3
print("Suma:", a + b)
print("Resta:", a - b)
print("Multiplicación:", a * b)
print("División:", a / b)
print("División entera:", a // b)
print("Módulo:", a % b)
print("Exponente:", a ** b)
Operadores de comparación
Estos operadores comparan dos valores y devuelven True o False:
- == : Igual a
- != : Diferente de
- < : Menor que
- > : Mayor que
- <= : Menor o igual que
- >= : Mayor o igual que
# Ejemplos de operadores de comparación
x = 5
y = 8
print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)
Operadores lógicos
Se utilizan para combinar declaraciones condicionales:
- and : Devuelve True si ambas declaraciones son verdaderas
- or : Devuelve True si una de las declaraciones es verdadera
- not : Invierte el resultado, devuelve False si el resultado es verdadero
# Ejemplos de operadores lógicos
a = True
b = False
print("a and b:", a and b)
print("a or b:", a or b)
print("not a:", not a)
print("not b:", not b)
Ejercicio Práctico
Calcula el área de un triángulo (base por altura dividido entre 2) y verifica si el área es mayor que 100.
Estructuras de control Intermedio
Condicionales: if, elif, else
Las estructuras condicionales permiten ejecutar diferentes bloques de código según si se cumple o no una condición.
# Ejemplo de condicional if-elif-else
edad = 18
if edad < 12:
print("Eres un niño")
elif edad < 18:
print("Eres un adolescente")
elif edad < 65:
print("Eres un adulto")
else:
print("Eres un adulto mayor")
Bucles: for
El bucle for se utiliza para iterar sobre una secuencia (lista, tupla, cadena, etc.).
# Ejemplo de bucle for
frutas = ["manzana", "banana", "cereza"]
for fruta in frutas:
print("Me gusta la", fruta)
# Bucle for con range
for i in range(5):
print("Número:", i)
Bucles: while
El bucle while ejecuta un bloque de código mientras se cumpla una condición.
# Ejemplo de bucle while
contador = 5
while contador > 0:
print("Contador:", contador)
contador -= 1 # Esto es igual a contador = contador - 1
print("¡Despegue!")
Break y continue
Break termina el bucle por completo, continue salta a la siguiente iteración.
# Ejemplo de break y continue
for numero in range(10):
if numero == 3:
continue # Salta el número 3
if numero == 8:
break # Termina el bucle en el número 8
print("Número:", numero)
Ejercicio Práctico
Escribe un programa que imprima los números del 1 al 20, pero para los múltiplos de 3 imprime "Fizz", para los múltiplos de 5 imprime "Buzz", y para los múltiplos de ambos imprime "FizzBuzz".
Listas y colecciones Intermedio
Listas (list)
Las listas son colecciones ordenadas y mutables de elementos.
# Ejemplos de listas
frutas = ["manzana", "banana", "cereza"]
numeros = [1, 2, 3, 4, 5]
mixto = [1, "hola", 3.14, True]
print("Lista de frutas:", frutas)
print("Primera fruta:", frutas[0])
print("Última fruta:", frutas[-1])
# Modificar un elemento
frutas[1] = "naranja"
print("Lista modificada:", frutas)
# Añadir elementos
frutas.append("uva")
print("Lista con nuevo elemento:", frutas)
# Longitud de la lista
print("Número de frutas:", len(frutas))
Tuplas (tuple)
Las tuplas son similares a las listas pero inmutables (no se pueden modificar después de creadas).
# Ejemplos de tuplas
coordenadas = (10, 20)
colores = ("rojo", "verde", "azul")
print("Coordenadas:", coordenadas)
print("Primer color:", colores[0])
# Las tuplas no se pueden modificar
# Esto daría error: colores[1] = "amarillo"
# Desempaquetado de tuplas
x, y = coordenadas
print("Coordenada x:", x)
print("Coordenada y:", y)
Conjuntos (set)
Los conjuntos son colecciones no ordenadas de elementos únicos.
# Ejemplos de conjuntos
mi_conjunto = {1, 2, 3, 3, 4, 4, 5}
print("Conjunto:", mi_conjunto) # Los duplicados se eliminan
# Añadir elementos
mi_conjunto.add(6)
print("Conjunto con nuevo elemento:", mi_conjunto)
# Operaciones con conjuntos
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print("Unión:", a | b)
print("Intersección:", a & b)
print("Diferencia:", a - b)
print("Diferencia simétrica:", a ^ b)
Diccionarios (dict)
Los diccionarios almacenan pares clave-valor.
# Ejemplos de diccionarios
estudiante = {
"nombre": "Ana",
"edad": 20,
"curso": "Python"
}
print("Diccionario completo:", estudiante)
print("Nombre del estudiante:", estudiante["nombre"])
# Modificar valores
estudiante["edad"] = 21
print("Edad actualizada:", estudiante["edad"])
# Añadir nuevo par clave-valor
estudiante["ciudad"] = "Medellín"
print("Diccionario actualizado:", estudiante)
# Recorrer diccionario
for clave, valor in estudiante.items():
print(clave + ":", valor)
Ejercicio Práctico
Crea un diccionario con información sobre un libro (título, autor, año) y luego muestra la información formateada.
Funciones Intermedio
Definición de funciones
Las funciones permiten organizar el código en bloques reutilizables.
# Definición de una función simple
def saludar():
print("¡Hola desde la función!")
# Llamar a la función
saludar()
# Función con parámetros
def saludar_persona(nombre):
print("¡Hola", nombre + "!")
saludar_persona("Ana")
saludar_persona("Carlos")
# Función con retorno
def sumar(a, b):
return a + b
resultado = sumar(5, 3)
print("La suma es:", resultado)
Parámetros y argumentos
Las funciones pueden tener parámetros con valores por defecto y aceptar diferentes tipos de argumentos.
# Parámetros con valores por defecto
def describir_animal(nombre, tipo="perro"):
print("Tengo un", tipo, "llamado", nombre)
describir_animal("Firulais") # Usa el valor por defecto
describir_animal("Silvestre", "gato") # Sobrescribe el valor por defecto
# Argumentos con nombre
def mostrar_info(nombre, edad, ciudad):
print(nombre, "tiene", edad, "años y vive en", ciudad)
mostrar_info(edad=25, ciudad="Bogotá", nombre="Laura")
# Número variable de argumentos
def listar_frutas(*frutas):
print("Frutas:")
for fruta in frutas:
print("-", fruta)
listar_frutas("manzana", "banana", "naranja", "uva")
Alcance de variables
Las variables pueden tener alcance global o local dentro de una función.
# Variables globales y locales
variable_global = "Soy global"
def mi_funcion():
variable_local = "Soy local"
print("Dentro de la función:", variable_global)
print("Dentro de la función:", variable_local)
mi_funcion()
print("Fuera de la función:", variable_global)
# Esto daría error: print(variable_local) - variable_local no está definida fuera de la función
# Usar la palabra clave global
contador = 0
def incrementar():
global contador
contador += 1
incrementar()
incrementar()
print("Contador:", contador)
Ejercicio Práctico
Crea una función que calcule el área de un círculo dado su radio, y otra función que calcule el área de un rectángulo dados su base y altura.
Manejo de errores Intermedio
Excepciones
Las excepciones son errores que ocurren durante la ejecución del programa. Python permite manejarlas para que el programa no se detenga.
# Ejemplo de excepción no manejada
# Esto causará un error si el usuario no ingresa un número
# numero = int(input("Ingresa un número: "))
# Manejando la excepción
try:
numero = int(input("Ingresa un número: "))
print("El número ingresado es:", numero)
except:
print("¡Eso no es un número válido!")
Try, except y finally
Se pueden manejar diferentes tipos de excepciones y agregar un bloque finally que siempre se ejecuta.
# Manejando diferentes tipos de excepciones
try:
# Código que puede generar errores
num = int(input("Ingresa un número: "))
resultado = 10 / num
print("El resultado es:", resultado)
except ValueError:
print("Error: Debes ingresar un número entero")
except ZeroDivisionError:
print("Error: No se puede dividir por cero")
except Exception as e:
print("Ocurrió un error inesperado:", type(e).__name__)
finally:
print("Este bloque siempre se ejecuta")
Errores comunes
Algunos errores comunes en Python y cómo evitarlos.
# 1. NameError - variable no definida
try:
print(variable_inexistente)
except NameError:
print("Error: La variable no está definida")
# 2. IndexError - índice fuera de rango
lista = [1, 2, 3]
try:
print(lista[5])
except IndexError:
print("Error: Índice fuera de rango")
# 3. KeyError - clave no existe en diccionario
diccionario = {"a": 1, "b": 2}
try:
print(diccionario["c"])
except KeyError:
print("Error: La clave no existe en el diccionario")
# 4. TypeError - operación en tipo incorrecto
try:
resultado = "10" + 5
except TypeError:
print("Error: No se puede concatenar str con int")
Ejercicio Práctico
Crea una función que pida al usuario dos números y devuelva su división. Maneja los posibles errores que puedan ocurrir.
Entrada y salida Intermedio
Entrada de datos con input()
La función input() permite obtener datos del usuario.
# Ejemplos de input()
nombre = input("¿Cómo te llamas? ")
print("¡Hola", nombre + "!")
# Input devuelve siempre una cadena
# Para convertir a otros tipos, debemos hacerlo explícitamente
edad = int(input("¿Cuántos años tienes? "))
print("El año que viene tendrás", edad + 1, "años")
altura = float(input("¿Cuál es tu altura en metros? "))
print("Tu altura es", altura, "metros")
Formateo de cadenas (f-strings)
Los f-strings permiten incrustar expresiones dentro de cadenas de forma sencilla.
# Formateo de cadenas con f-strings
nombre = "Ana"
edad = 25
altura = 1.68
# Forma antigua
print("Hola, me llamo %s y tengo %d años" % (nombre, edad))
print("Hola, me llamo {} y tengo {} años".format(nombre, edad))
# Forma moderna con f-strings (Python 3.6+)
print(f"Hola, me llamo {nombre} y tengo {edad} años")
print(f"Mi altura es {altura} metros")
print(f"El año que viene tendré {edad + 1} años")
# Formateo de números
precio = 49.99
print(f"El precio es {precio:.2f} dólares") # Dos decimales
porcentaje = 0.756
print(f"El porcentaje es {porcentaje:.1%}") # Formato porcentaje
Lectura y escritura de archivos
Python permite trabajar con archivos para guardar y cargar datos.
# Escritura de archivos
with open("mi_archivo.txt", "w") as archivo:
archivo.write("Hola, mundo!\n")
archivo.write("Este es un archivo de ejemplo.\n")
archivo.write("Python es genial!\n")
print("Archivo escrito correctamente")
# Lectura de archivos
with open("mi_archivo.txt", "r") as archivo:
contenido = archivo.read()
print("Contenido del archivo:")
print(contenido)
# Lectura línea por línea
print("\nLeyendo línea por línea:")
with open("mi_archivo.txt", "r") as archivo:
for numero_linea, linea in enumerate(archivo, 1):
print(f"Línea {numero_linea}: {linea.strip()}")
Ejercicio Práctico
Crea un programa que pida al usuario su nombre, edad y ciudad, y guarde esta información en un archivo llamado "usuario.txt". Luego lee el archivo y muestra su contenido.
Módulos y librerías Intermedio
Importar módulos
Python tiene una amplia biblioteca estándar con módulos para diversas tareas.
# Diferentes formas de importar módulos
# Importar todo el módulo
import math
print("Pi:", math.pi)
print("Raíz cuadrada de 16:", math.sqrt(16))
# Importar con alias
import math as m
print("Pi:", m.pi)
# Importar solo lo que necesitamos
from math import pi, sqrt
print("Pi:", pi)
print("Raíz cuadrada de 25:", sqrt(25))
# Importar todo (no recomendado)
# from math import *
# print(pi)
Módulos útiles de la biblioteca estándar
Algunos módulos populares de la biblioteca estándar de Python.
# Módulo random para números aleatorios
import random
print("Número aleatorio entre 0 y 1:", random.random())
print("Entero aleatorio entre 1 y 10:", random.randint(1, 10))
print("Elemento aleatorio de una lista:", random.choice(["manzana", "banana", "cereza"]))
# Módulo datetime para fechas y horas
import datetime
ahora = datetime.datetime.now()
print("Fecha y hora actual:", ahora)
print("Solo la fecha:", ahora.date())
print("Solo la hora:", ahora.time())
# Módulo os para interactuar con el sistema operativo
import os
print("Directorio actual:", os.getcwd())
print("Variables de entorno:", dict(list(os.environ.items())[:3])) # Primeras 3 variables
Instalar paquetes con pip
pip es el gestor de paquetes de Python que permite instalar librerías de terceros.
# Para instalar paquetes, usamos pip desde la terminal
# pip install nombre_del_paquete
# Algunos paquetes populares:
# - numpy: para computación científica
# - pandas: para análisis de datos
# - matplotlib: para visualización de datos
# - requests: para hacer peticiones HTTP
# - flask: para desarrollo web
# Después de instalar un paquete, lo importamos como cualquier módulo
# import numpy as np
# import pandas as pd
# import matplotlib.pyplot as plt
# Ejemplo simulado (sin necesidad de instalar)
print("Después de instalar un paquete con pip, puedes importarlo en tu código")
# Para ver los paquetes instalados: pip list
# Para instalar una versión específica: pip install nombre==versión
# Para desinstalar: pip uninstall nombre
Ejercicio Práctico
Usa los módulos random y datetime para crear un programa que genere una fecha aleatoria dentro del próximo mes y una hora aleatoria del día.
Proyecto Final Avanzado
¡Felicidades!
Has llegado al final del curso básico de Python. Ahora es momento de aplicar todo lo aprendido en un proyecto integrador.
Propuesta de proyecto: Sistema de Gestión
Elige uno de los siguientes proyectos para implementar:
- Calculadora básica: Que realice operaciones aritméticas simples
- Juego de adivinanza: Donde el usuario deba adivinar un número aleatorio
- Registro de notas: Para gestionar calificaciones de estudiantes
- Agenda de contactos: Para almacenar y buscar información de contactos
Implementa tu solución
Escribe el código para tu proyecto elegido. Recuerda utilizar todos los conceptos aprendidos: variables, operadores, estructuras de control, funciones, etc.
Evaluación Final Examen
Pon a prueba tus conocimientos
Responde las siguientes preguntas para evaluar lo que has aprendido en el curso. Al finalizar, obtendrás una calificación y retroalimentación.
Examen de Conocimientos de Python
1. ¿Qué es Python?
2. ¿Cómo se define una variable en Python?
3. ¿Cuál de estos NO es un tipo de dato en Python?
4. ¿Qué bucle se utiliza para iterar sobre una secuencia en Python?
5. ¿Cómo se define una función en Python?
6. ¿Cuál es la salida de este código?
print(2 ** 3)
7. ¿Cómo se manejan las excepciones en Python?
8. ¿Qué hace el método append() en una lista?
9. ¿Cómo se importa el módulo math en Python?
10. ¿Qué imprime este código?
print("Hola" + " " + "Mundo")