GUIA DE ESTUDIO
Curso de Programacion Python
Arturo Montejo Raez y Salud Maria Jimenez Zafra
Ingenieria en Software | Material de Estudio Academico
Python es uno de los lenguajes de programacion mas populares del mundo,
especialmente valorado por su legibilidad, versatilidad y la enorme comunidad que lo
rodea. Esta guia cubre desde los conceptos basicos hasta la programacion orientada a
objetos, con ejemplos de codigo practicos en cada seccion.
INDICE
1. Introduccion a Python
2. Variables y Tipos de Datos
3. Operadores
4. Estructuras de Control
5. Funciones
6. Estructuras de Datos: Listas, Tuplas, Diccionarios y Conjuntos
7. Cadenas de Texto (Strings)
8. Manejo de Archivos
9. Programacion Orientada a Objetos (POO)
10. Manejo de Errores y Excepciones
11. Modulos y Paquetes
12. Bibliotecas Fundamentales
13. Referencia Rapida — Cheat Sheet
1. Introduccion a Python
Python fue creado por Guido van Rossum y lanzado en 1991. Su diseno enfatiza la
legibilidad del codigo y la productividad del programador. El nombre proviene del grupo
comico 'Monty Python', no de la serpiente.
Caracteristicas de Python:
• Lenguaje interpretado: El codigo se ejecuta linea por linea.
• Tipado dinamico: No es necesario declarar el tipo de las variables.
• Multiparadigma: Soporta programacion imperativa, funcional y orientada a objetos.
• Gran biblioteca estandar: 'Batteries included' — casi todo lo que necesitas ya viene
incluido.
• Amplia comunidad: Miles de bibliotecas de terceros disponibles via pip.
• Multiplataforma: Funciona en Windows, macOS y Linux.
Primer programa en Python:
# Este es un comentario
print("Hola, Mundo!")
print("Bienvenido a Python")
Para ejecutar: guarda como [Link] y ejecuta con: python3 [Link]
2. Variables y Tipos de Datos
En Python, las variables se crean al asignarles un valor. No es necesario declarar el tipo
previamente. Python infiere el tipo automaticamente.
# Tipos numericos entero = 42 flotante = 3.14 complejo = 2 + 3j # Texto
nombre = "Python" caracter = "A" # Booleano verdadero = True falso =
False # Nulo nada = None
Verificar el tipo de una variable:
print(type(entero)) # print(type(flotante)) # print(type(nombre)) #
Conversion de tipos (Casting):
# Convertir entre tipos num_str = "42" num_int = int(num_str) # String a
entero: 42 num_float = float(num_str) # String a flotante: 42.0
nuevo_str = str(100) # Entero a string: "100" bool_num = bool(0) # 0 es
False, cualquier otro numero es True
3. Operadores
Tipo Operador Ejemplo Resultado
Aritmetico +, -, *, / 10 + 3 13
Aritmetico // 10 // 3 3 (division entera)
Aritmetico % 10 % 3 1 (modulo/resto)
Aritmetico ** 2 ** 8 256 (potencia)
Comparacion ==, != 5 == 5 True
Comparacion <, >, <=, >= 3<5 True
Logico and True and False False
Logico or True or False True
Logico not not True False
Asignacion +=, -=, *= x += 1 x=x+1
Identidad is, is not x is None True/False
Pertenencia in, not in "a" in "hola" False
4. Estructuras de Control
4.1 Condicionales (if / elif / else)
edad = 20 if edad < 13: print("Nino") elif edad < 18:
print("Adolescente") elif edad < 65: print("Adulto") else: print("Adulto
mayor")
IMPORTANTE: Python usa indentacion (espacios) para definir bloques. No hay llaves
{ }.
4.2 Bucle for
# Iterar sobre una lista frutas = ["manzana", "banana", "naranja"] for
fruta in frutas: print(fruta) # Iterar con range for i in range(5): # 0,
1, 2, 3, 4 print(i) for i in range(1, 11): # 1 hasta 10 print(i) #
enumerate: indice y valor for i, fruta in enumerate(frutas):
print(f"{i}: {fruta}")
4.3 Bucle while
contador = 0 while contador < 5: print(f"Contador: {contador}") contador
+= 1 # break: sale del bucle # continue: salta a la siguiente iteracion
4.4 Comprension de Listas (List Comprehension)
Una forma compacta y elegante de crear listas. Es una caracteristica poderosa de Python.
# Forma tradicional cuadrados = [] for x in range(1, 6):
[Link](x**2) # List comprehension equivalente cuadrados =
[x**2 for x in range(1, 6)] # [1, 4, 9, 16, 25] # Con condicion pares =
[x for x in range(20) if x % 2 == 0] # [0, 2, 4, ..., 18]
5. Funciones
Las funciones son bloques de codigo reutilizables que realizan una tarea especifica. Se
definen con la palabra clave 'def'.
# Funcion basica def saludar(nombre): """Docstring: descripcion de la
funcion""" return f"Hola, {nombre}!" resultado = saludar("Python")
print(resultado) # Hola, Python!
Parametros y argumentos:
# Valor por defecto def potencia(base, exponente=2): return base **
exponente print(potencia(3)) # 9 (usa exponente=2) print(potencia(3, 3))
# 27 # *args: numero variable de argumentos def suma(*numeros): return
sum(numeros) print(suma(1, 2, 3, 4)) # 10 # **kwargs: argumentos con
nombre variable def info(**datos): for clave, valor in [Link]():
print(f"{clave}: {valor}") info(nombre="Ana", edad=25, ciudad="Madrid")
Funciones Lambda (anonimas):
# Funcion lambda doble = lambda x: x * 2 print(doble(5)) # 10 # Util con
sorted, map, filter numeros = [3, 1, 4, 1, 5, 9] numeros_ord =
sorted(numeros, key=lambda x: -x) # Orden descendente
6. Estructuras de Datos Principales
6.1 Listas (list) — Ordenadas y Mutables
frutas = ["manzana", "banana", "naranja"] # Operaciones basicas
[Link]("uva") # Anadir al final [Link](1, "kiwi") #
Insertar en posicion [Link]("banana") # Eliminar por valor pop =
[Link]() # Eliminar y retornar el ultimo # Slicing print(frutas[0])
# Primer elemento print(frutas[-1]) # Ultimo elemento print(frutas[1:3])
# Elementos del indice 1 al 2 print(frutas[::-1]) # Invertir lista #
Longitud print(len(frutas))
6.2 Tuplas (tuple) — Ordenadas e Inmutables
coordenadas = (10, 20) punto = (3, 4, 5) # Las tuplas no se pueden
modificar despues de crearse # Son mas rapidas que las listas # Uso
tipico: datos que no deben cambiar (coordenadas, RGB, etc.) x, y =
coordenadas # Desempaquetado
6.3 Diccionarios (dict) — Pares Clave:Valor
persona = { "nombre": "Ana", "edad": 25, "ciudad": "Barcelona" } #
Acceso print(persona["nombre"]) # Ana print([Link]("telefono",
"N/A")) # N/A (valor por defecto) # Modificar y anadir persona["edad"] =
26 persona["email"] = "ana@[Link]" # Iterar for clave, valor in
[Link](): print(f"{clave}: {valor}") # Verificar existencia if
"nombre" in persona: print("Tiene nombre")
6.4 Conjuntos (set) — Sin duplicados, Sin orden
numeros = {1, 2, 3, 4, 5} mas_numeros = {3, 4, 5, 6, 7} # Operaciones de
conjuntos union = numeros | mas_numeros # {1,2,3,4,5,6,7} interseccion =
numeros & mas_numeros # {3,4,5} diferencia = numeros - mas_numeros #
{1,2} # Util para eliminar duplicados de una lista lista_con_dup = [1,
2, 2, 3, 3, 3, 4] sin_dup = list(set(lista_con_dup)) # [1, 2, 3, 4]
7. Cadenas de Texto (Strings)
texto = "Hola, Python!" # Metodos de strings print([Link]()) #
"HOLA, PYTHON!" print([Link]()) # "hola, python!"
print([Link]()) # Elimina espacios al inicio/fin
print([Link]("Python", "Mundo")) # "Hola, Mundo!"
print([Link](", ")) # ["Hola", "Python!"]
print([Link]("Hola")) # True print(len(texto)) # 13 # Formateo
de strings nombre = "Ana" edad = 25 print(f"Me llamo {nombre} y tengo
{edad} anos") # f-strings (Python 3.6+) print("Me llamo {} y tengo {}
anos".format(nombre, edad)) # Slicing en strings print(texto[0:4]) #
"Hola" print(texto[-7:]) # "Python!" print(texto[::-1]) # Invertir
string
8. Manejo de Archivos
# Leer un archivo with open("[Link]", "r", encoding="utf-8") as f:
contenido = [Link]() # Todo el contenido lineas = [Link]() # Lista
de lineas # Escribir en un archivo with open("[Link]", "w",
encoding="utf-8") as f: [Link]("Primera linea\n") [Link]("Segunda
linea\n") # Anadir al final with open("[Link]", "a",
encoding="utf-8") as f: [Link]("Linea anadida\n") # Modos de apertura:
# "r" = leer (por defecto) # "w" = escribir (sobreescribe) # "a" =
anadir # "rb", "wb" = binario
El contexto 'with' cierra automaticamente el archivo al terminar, incluso si hay un error.
9. Programacion Orientada a Objetos (POO)
La POO organiza el codigo en 'objetos' que combinan datos (atributos) y comportamiento
(metodos). Los cuatro pilares son: Encapsulacion, Herencia, Polimorfismo y Abstraccion.
class Animal: """Clase base Animal""" def __init__(self, nombre,
especie): [Link] = nombre # Atributo publico self._especie =
especie # Atributo protegido def hablar(self): raise
NotImplementedError("Subclases deben implementar hablar()") def
__str__(self): return f"{[Link]} ({self._especie})" class
Perro(Animal): # Herencia def __init__(self, nombre):
super().__init__(nombre, "Canis lupus") [Link] = [] def
hablar(self): # Polimorfismo return "Guau!" def aprender_truco(self,
truco): [Link](truco) class Gato(Animal): def hablar(self):
return "Miau!" # Uso perro = Perro("Rex") gato = Gato("Mishi")
print([Link]()) # Guau! print([Link]()) # Miau!
perro.aprender_truco("sentarse") print([Link]) # ["sentarse"]
Conceptos clave de POO en Python:
__init__: Constructor: se llama automaticamente al crear un objeto.
self: Referencia al objeto actual. Equivale a 'this' en otros lenguajes.
Herencia: Una clase puede heredar atributos y metodos de otra (class Hijo(Padre)).
super(): Llama al constructor o metodo de la clase padre.
Encapsulacion: _atributo (protegido) o __atributo (privado) sugieren que no se
acceda desde fuera.
__str__: Define como se representa el objeto como string (print).
Polimorfismo: Diferentes clases pueden tener el mismo metodo con
comportamientos distintos.
10. Manejo de Errores y Excepciones
# Estructura basica try/except try: numero = int(input("Ingresa un
numero: ")) resultado = 10 / numero print(f"Resultado: {resultado}")
except ValueError: print("Error: debes ingresar un numero valido")
except ZeroDivisionError: print("Error: no se puede dividir entre cero")
except Exception as e: print(f"Error inesperado: {e}") else: print("Todo
salio bien") finally: print("Este bloque siempre se ejecuta")
Excepciones comunes en Python:
Excepcion Cuando ocurre
ValueError Valor incorrecto (ej: int("abc"))
TypeError Tipo incorrecto (ej: "hola" + 5)
IndexError Indice fuera de rango en lista
KeyError Clave no encontrada en diccionario
FileNotFoundError Archivo no encontrado
ZeroDivisionError Division entre cero
AttributeError Atributo no existe en el objeto
ImportError No se puede importar un modulo
11. Modulos y Paquetes
# Importar un modulo completo import math print([Link](16)) # 4.0
print([Link]) # 3.14159... # Importar funciones especificas from math
import sqrt, pi print(sqrt(25)) # 5.0 # Importar con alias import numpy
as np import pandas as pd # Crear tu propio modulo # archivo:
mis_funciones.py def suma(a, b): return a + b # En otro archivo: # from
mis_funciones import suma
Modulos de la biblioteca estandar mas usados:
math: Funciones matematicas: sqrt, floor, ceil, sin, cos, pi, e
random: Numeros aleatorios: random(), randint(), choice(), shuffle()
os: Interaccion con el sistema operativo: rutas, directorios, variables de entorno
sys: Parametros del sistema: argumentos de linea de comandos, ruta de modulos
datetime: Fechas y tiempos: date, time, datetime, timedelta
json: Lectura y escritura de JSON: [Link](), [Link]()
re: Expresiones regulares para procesamiento de texto
collections: Estructuras de datos adicionales: Counter, defaultdict, deque
itertools: Funciones para iteracion eficiente
pathlib: Manejo moderno de rutas de archivos
12. Bibliotecas Fundamentales (Instalar con pip)
NumPy (pip install numpy)
Computacion numerica. Arrays N-dimensionales, algebra lineal, FFT. Fundamento de
la ciencia de datos en Python.
Pandas (pip install pandas)
Analisis de datos. DataFrames, series temporales, lectura de CSV/Excel.
Imprescindible para data science.
Matplotlib (pip install matplotlib)
Visualizacion de datos. Graficas, histogramas, scatter plots, etc.
Requests (pip install requests)
Peticiones HTTP. Consumir APIs REST de forma sencilla.
Flask (pip install flask)
Framework web minimalista. Ideal para APIs y aplicaciones web pequenas.
Django (pip install django)
Framework web completo. Incluye ORM, admin, autenticacion y mucho mas.
SQLAlchemy (pip install sqlalchemy)
ORM para bases de datos relacionales. Compatible con SQLite, PostgreSQL, MySQL.
Pytest (pip install pytest)
Framework de pruebas. Mas facil y potente que unittest.
Scikit-learn (pip install scikit-learn)
Machine Learning. Algoritmos de clasificacion, regresion, clustering, etc.
13. Referencia Rapida — Cheat Sheet de Python
# === TIPOS DE DATOS === x = 42 # int y = 3.14 # float s = "hola" # str b
= True # bool n = None # NoneType # === COLECCIONES === lista = [1, 2, 3]
# Mutable, ordenada tupla = (1, 2, 3) # Inmutable, ordenada dicto =
{"a": 1, "b": 2} # Clave-valor conjunto = {1, 2, 3} # Sin duplicados #
=== CONTROL DE FLUJO === if x > 0: print("positivo") for i in range(5):
print(i) while x > 0: x -= 1 # === FUNCIONES === def mi_func(a, b=10):
return a + b lambda_fn = lambda x: x**2 # === CLASES === class MiClase:
def __init__(self, val): [Link] = val def metodo(self): return
[Link] # === MANEJO DE ERRORES === try: resultado = 1/0 except
ZeroDivisionError as e: print(f"Error: {e}") finally: print("Siempre se
ejecuta") # === COMPRENSIONES === cuadrados = [x**2 for x in range(10)]
pares = {x: x**2 for x in range(5)} conjunto_pares = {x for x in
range(10) if x%2==0} # === ARCHIVOS === with open("[Link]", "r") as f:
contenido = [Link]()
Fin de la Guia de Estudio N. 5 — Curso de Programacion Python