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:

  1. Calculadora básica: Que realice operaciones aritméticas simples
  2. Juego de adivinanza: Donde el usuario deba adivinar un número aleatorio
  3. Registro de notas: Para gestionar calificaciones de estudiantes
  4. 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")