Apuntes de Python
APUNTES DE PYTHON
Desde cero hasta ejercicios de examen
Objetivo: entender la sintaxis, saber programar ejercicios basicos y reconocer errores
tipicos.
Incluye: teoria, ejemplos comentados, patrones, ejercicios y chuleta final.
Pagina 1 de 14
Apuntes de Python
Indice
1. 1. Que es Python y como se ejecuta un programa
2. 2. Variables, tipos de datos y entrada/salida
3. 3. Operadores y expresiones
4. 4. Condicionales: if, elif, else
5. 5. Bucles: for y while
6. 6. Estructuras de datos: listas, tuplas, diccionarios y conjuntos
7. 7. Funciones: organizar codigo y reutilizar soluciones
8. 8. Strings: tratamiento de texto
9. 9. Ficheros: leer y escribir archivos
10. 10. Errores, excepciones y depuracion
11. 11. Numpy, matrices y calculo numerico basico
12. 12. Graficas con matplotlib
13. 13. Programacion orientada a objetos
14. 14. Patrones de examen y ejercicios resueltos
15. 15. Chuleta final
Pagina 2 de 14
Apuntes de Python
1. Que es Python y como se ejecuta un programa
Python es un lenguaje de programacion de alto nivel, muy usado porque su sintaxis es clara y permite
resolver problemas con pocas lineas. Se utiliza en calculo, automatizacion, analisis de datos, inteligencia
artificial, sonido, graficas, bases de datos y aplicaciones.
Idea clave
Programar no es memorizar comandos: es dividir un problema en pasos pequenos, ordenados y comprobables. Python
ejecuta esas instrucciones de arriba abajo, salvo que usemos condicionales, bucles o funciones.
Formas de trabajar
Forma Uso Ejemplo
Consola/interprete Probar instrucciones sueltas >>> 2 + 3
Archivo .py Guardar un programa completo python [Link]
Notebook Combinar codigo, texto y resultados Jupyter / Colab
IDE/editor Escribir, ejecutar y depurar VS Code, PyCharm, Thonny
Primer programa
# Esto es un comentario: Python no lo ejecuta
print("Hola, mundo")
print(2 + 3)
print(...) muestra informacion por pantalla.
Las comillas sirven para escribir texto: "Hola" o 'Hola'.
Los comentarios empiezan por # y sirven para explicar el codigo.
Python distingue mayusculas y minusculas: variable y Variable no son lo mismo.
2. Variables, tipos de datos y entrada/salida
Variables
Una variable es un nombre que guarda un valor. No hace falta declarar el tipo: Python lo deduce.
edad = 22
nombre = "Maria"
altura = 1.67
estudiante = True
print(nombre, edad, altura, estudiante)
Tipo Nombre en Python Ejemplo Para que sirve
Entero int 7 Contar elementos, indices,
edades
Decimal float 3.14 Medidas, notas, calculos
Texto str "violin" Nombres, frases, mensajes
Booleano bool True / False Condiciones y decisiones
Nulo NoneType None Ausencia de valor
Comprobar el tipo
x = 3.5
print(type(x)) # <class 'float'>
x = int(x)
print(x, type(x)) # 3 <class 'int'>
Pagina 3 de 14
Apuntes de Python
Entrada de datos: input
input() siempre devuelve texto. Si queremos numeros, hay que convertir.
nombre = input("Nombre: ")
edad = int(input("Edad: "))
print("Hola", nombre)
print("El ano que viene tendras", edad + 1)
Error tipico
Si haces edad = input("Edad: ") y luego edad + 1, dara error porque edad es texto. Solucion: edad = int(input("Edad: ")).
3. Operadores y expresiones
Operadores aritmeticos
Operador Significado Ejemplo Resultado
+ suma 3+2 5
- resta 3-2 1
* multiplicacion 3*2 6
/ division decimal 5/2 2.5
// division entera 5 // 2 2
% resto 5%2 1
** potencia 2 ** 3 8
Operadores de comparacion
Operador Lee como Ejemplo
== igual a x == 5
!= distinto de x != 5
< menor que x<5
<= menor o igual x <= 5
> mayor que x>5
>= mayor o igual x >= 5
Operadores logicos
edad = 20
tiene_carnet = True
puede_conducir = edad >= 18 and tiene_carnet
print(puede_conducir)
Operador Significado Ejemplo
and se cumplen ambas condiciones nota >= 5 and asistencia >= 80
or se cumple al menos una dia == "sabado" or dia == "domingo"
not niega una condicion not aprobado
4. Condicionales: if, elif, else
Los condicionales permiten que el programa tome decisiones. La indentacion es obligatoria: el bloque de
codigo que pertenece al if va desplazado hacia la derecha.
nota = float(input("Nota: "))
if nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
Pagina 4 de 14
Apuntes de Python
elif nota >= 5:
print("Aprobado")
else:
print("Suspenso")
Regla de oro
En Python no se usan llaves { } para delimitar bloques. Se usa indentacion, normalmente 4 espacios. Si la indentacion
esta mal, aparece IndentationError.
Condiciones anidadas
edad = 19
carnet = True
if edad >= 18:
if carnet:
print("Puedes conducir")
else:
print("Eres mayor de edad, pero no tienes carnet")
else:
print("Eres menor de edad")
Forma abreviada
nota = 6
resultado = "aprobado" if nota >= 5 else "suspenso"
print(resultado)
5. Bucles: for y while
Un bucle repite instrucciones. Se usa for cuando sabemos cuantas veces queremos repetir o queremos
recorrer una secuencia. Se usa while cuando repetimos mientras se cumpla una condicion.
Bucle for con range
for i in range(5):
print(i)
# Muestra: 0, 1, 2, 3, 4
range Significado Valores
range(5) desde 0 hasta 5 sin incluir 5 0,1,2,3,4
range(2, 6) desde 2 hasta 6 sin incluir 6 2,3,4,5
range(1, 10, 2) desde 1 hasta 10 de 2 en 2 1,3,5,7,9
Recorrer listas
notas = [7, 8.5, 4, 9]
for nota in notas:
print(nota)
Bucle while
contador = 1
while contador <= 5:
print(contador)
Pagina 5 de 14
Apuntes de Python
contador += 1
Cuidado con el bucle infinito
Si la condicion de un while nunca deja de cumplirse, el programa no termina. Asegurate de modificar alguna variable
dentro del bucle.
break y continue
for n in range(1, 11):
if n == 5:
continue # salta esta vuelta
if n == 9:
break # termina el bucle
print(n)
6. Estructuras de datos
Listas
Una lista guarda varios valores en orden. Es modificable.
frutas = ["manzana", "pera", "uva"]
print(frutas[0]) # manzana
[Link]("kiwi") # anade al final
frutas[1] = "platano" # modifica
print(frutas)
Operacion Ejemplo Resultado/uso
Longitud len(lista) numero de elementos
Anadir [Link](x) anade x al final
Insertar [Link](0, x) anade x en posicion 0
Eliminar por valor [Link](x) quita la primera aparicion de x
Eliminar por indice [Link](i) quita y devuelve el elemento i
Ordenar [Link]() ordena la lista
Invertir [Link]() invierte el orden
Indices y slicing
numeros = [10, 20, 30, 40, 50]
print(numeros[0]) # 10
print(numeros[-1]) # 50
print(numeros[1:4]) # [20, 30, 40]
print(numeros[:3]) # [10, 20, 30]
print(numeros[::2]) # [10, 30, 50]
Tuplas
Una tupla es parecida a una lista, pero no se puede modificar. Se usa para datos fijos.
coordenada = (3, 5)
x, y = coordenada
print(x, y)
Diccionarios
Un diccionario guarda pares clave-valor. Es ideal para asociar datos: nombre-nota, producto-precio, palabra-
definicion.
alumna = {
"nombre": "Maria",
Pagina 6 de 14
Apuntes de Python
"edad": 22,
"instrumento": "violin"
}
print(alumna["nombre"])
alumna["nota"] = 9.5
for clave, valor in [Link]():
print(clave, valor)
Conjuntos
Un conjunto no tiene orden y no admite repetidos. Sirve para eliminar duplicados y hacer operaciones de
conjuntos.
numeros = [1, 2, 2, 3, 3, 3]
unicos = set(numeros)
print(unicos) # {1, 2, 3}
7. Funciones
Una funcion agrupa instrucciones bajo un nombre. Sirve para no repetir codigo y para dividir problemas
grandes en partes pequenas.
def saludar(nombre):
print("Hola", nombre)
saludar("Maria")
Funciones con return
def area_rectangulo(base, altura):
area = base * altura
return area
resultado = area_rectangulo(5, 3)
print(resultado)
print vs return
print muestra algo en pantalla. return devuelve un valor para poder guardarlo, usarlo en otra operacion o comprobarlo en
un test.
Parametros con valores por defecto
def presentar(nombre, instrumento="violin"):
print(nombre, "toca", instrumento)
presentar("Maria")
presentar("Ana", "piano")
Alcance de variables
x = 10 # variable global
def prueba():
x = 5 # variable local
print(x)
prueba() # 5
Pagina 7 de 14
Apuntes de Python
print(x) # 10
8. Strings: tratamiento de texto
Operaciones basicas
texto = "Python es util"
print([Link]()) # PYTHON ES UTIL
print([Link]()) # python es util
print([Link]("util", "claro"))
print([Link]()) # ['Python', 'es', 'util']
f-strings
Las f-strings permiten insertar variables dentro de un texto de forma clara.
nombre = "Maria"
nota = 8.75
print(f"{nombre} ha sacado un {nota:.1f}")
Recorrer caracteres
palabra = "violin"
contador = 0
for letra in palabra:
if letra in "aeiou":
contador += 1
print("Vocales:", contador)
9. Ficheros: leer y escribir archivos
Los ficheros permiten guardar datos fuera del programa. Lo mas habitual es trabajar con archivos .txt o .csv.
Escribir un archivo
with open("[Link]", "w", encoding="utf-8") as f:
[Link]("Primera linea
")
[Link]("Segunda linea
")
Leer un archivo
with open("[Link]", "r", encoding="utf-8") as f:
contenido = [Link]()
print(contenido)
Leer linea a linea
with open("[Link]", "r", encoding="utf-8") as f:
for linea in f:
print([Link]())
Pagina 8 de 14
Apuntes de Python
Modos de apertura
Modo Significado
"r" leer; el archivo debe existir
"w" escribir; borra lo anterior si existe
"a" anadir al final
"x" crear; falla si ya existe
10. Errores, excepciones y depuracion
Errores frecuentes
Error Que significa Ejemplo
SyntaxError La sintaxis esta mal if x > 3 falta :
NameError Variable no definida print(nota) sin haber creado nota
TypeError Operacion con tipos incompatibles "3" + 2
ValueError Conversion imposible int("hola")
IndexError Indice fuera de rango lista[10]
KeyError Clave inexistente en diccionario dic["edad"]
IndentationError Indentacion incorrecta bloque sin 4 espacios
try-except
try:
edad = int(input("Edad: "))
print("El ano que viene:", edad + 1)
except ValueError:
print("Debes escribir un numero entero")
Como depurar
Lee el mensaje de error de abajo hacia arriba: la ultima linea suele decir el tipo de error.
Mira el numero de linea indicado.
Usa print para comprobar el valor de las variables en puntos importantes.
Prueba el programa con casos pequenos antes de hacerlo con muchos datos.
Divide el problema en funciones: es mas facil encontrar donde falla.
11. Numpy, matrices y calculo numerico basico
Numpy es una biblioteca para calculo numerico. Permite trabajar con vectores, matrices y operaciones
matematicas de forma eficiente.
Importar numpy
import numpy as np
v = [Link]([1, 2, 3])
print(v + 10) # [11 12 13]
print(v * 2) # [2 4 6]
Vectores y matrices
import numpy as np
A = [Link]([[1, 2],
[3, 4]])
b = [Link]([5, 6])
print([Link]) # (2, 2)
print(A @ b) # producto matriz-vector
Pagina 9 de 14
Apuntes de Python
print(A.T) # traspuesta
Funciones utiles
Funcion Uso
[Link]([...]) crear vector o matriz
[Link]((m,n)) matriz de ceros
[Link]((m,n)) matriz de unos
[Link](a,b,n) n valores entre a y b
[Link](v) media
[Link](v) desviacion tipica
[Link](v), [Link](v) maximo y minimo
[Link](A,b) resolver Ax = b
Resolver un sistema lineal
import numpy as np
# 2x + y = 5
# x - y = 1
A = [Link]([[2, 1],
[1, -1]])
b = [Link]([5, 1])
x = [Link](A, b)
print(x)
Importante
Con listas normales, [1,2,3] * 2 repite la lista. Con arrays de numpy, [Link]([1,2,3]) * 2 multiplica cada elemento.
12. Graficas con matplotlib
matplotlib sirve para representar datos y funciones. Es muy util para estudiar resultados de calculo, fisica,
sonido o estadistica.
import numpy as np
import [Link] as plt
x = [Link](0, 2*[Link], 200)
y = [Link](x)
[Link](x, y)
[Link]("x")
[Link]("sin(x)")
[Link]("Funcion seno")
[Link](True)
[Link]()
Grafica de puntos
import [Link] as plt
horas = [1, 2, 3, 4, 5]
notas = [4, 5, 6, 7, 8]
[Link](horas, notas)
[Link]("Horas de estudio")
[Link]("Nota")
[Link]()
Pagina 10 de 14
Apuntes de Python
Guardar una grafica
[Link]("[Link]", dpi=300, bbox_inches="tight")
13. Programacion orientada a objetos
La programacion orientada a objetos organiza el codigo en clases y objetos. Una clase es como una plantilla;
un objeto es un caso concreto de esa plantilla.
class Instrumento:
def __init__(self, nombre, familia):
[Link] = nombre
[Link] = familia
def describir(self):
return f"{[Link]} pertenece a {[Link]}"
violin = Instrumento("violin", "cuerda")
print([Link]())
Concepto Significado
Clase Plantilla que define atributos y metodos
Objeto Instancia concreta de una clase
Atributo Dato del objeto: nombre, edad, nota...
Metodo Funcion dentro de una clase
self Referencia al propio objeto
__init__ Constructor: se ejecuta al crear el objeto
14. Patrones de examen y ejercicios resueltos
Patron 1: sumar elementos de una lista
numeros = [4, 7, 2, 9]
suma = 0
for n in numeros:
suma += n
print(suma)
Patron 2: contar cuantos cumplen una condicion
notas = [4, 7, 8, 3, 10]
aprobados = 0
for nota in notas:
if nota >= 5:
aprobados += 1
print(aprobados)
Patron 3: maximo y minimo
numeros = [8, 3, 12, 5]
maximo = numeros[0]
for n in numeros:
if n > maximo:
maximo = n
Pagina 11 de 14
Apuntes de Python
print(maximo)
Patron 4: construir una nueva lista
numeros = [1, 2, 3, 4, 5]
cuadrados = []
for n in numeros:
[Link](n**2)
print(cuadrados)
Patron 5: validar entrada
while True:
nota = float(input("Nota entre 0 y 10: "))
if 0 <= nota <= 10:
break
print("Nota no valida")
print("Nota guardada:", nota)
Ejercicio resuelto 1: media de notas
Enunciado: pedir notas hasta que el usuario escriba -1. Calcular la media.
notas = []
while True:
nota = float(input("Nota (-1 para terminar): "))
if nota == -1:
break
[Link](nota)
if len(notas) > 0:
media = sum(notas) / len(notas)
print("Media:", media)
else:
print("No hay notas")
Ejercicio resuelto 2: frecuencia de palabras
Enunciado: contar cuantas veces aparece cada palabra en una frase.
frase = "python es facil y python es util"
palabras = [Link]()
conteo = {}
for palabra in palabras:
if palabra in conteo:
conteo[palabra] += 1
else:
conteo[palabra] = 1
print(conteo)
Ejercicio resuelto 3: filtrar numeros pares
numeros = [1, 2, 3, 4, 5, 6]
pares = []
Pagina 12 de 14
Apuntes de Python
for n in numeros:
if n % 2 == 0:
[Link](n)
print(pares)
Ejercicios para practicar
16. Pide dos numeros y muestra suma, resta, multiplicacion y division.
17. Pide una edad e indica si la persona es menor de edad, adulta o jubilada.
18. Dada una lista de notas, calcula media, maxima, minima y numero de aprobados.
19. Pide una palabra y cuenta cuantas vocales tiene.
20. Crea una funcion que reciba una lista y devuelva solo los valores positivos.
21. Crea una funcion que diga si un numero es primo.
22. Lee un archivo de texto y cuenta cuantas lineas tiene.
23. Representa y = x^2 para x entre -10 y 10 con matplotlib.
24. Crea una matriz 3x3 con numpy y calcula su traspuesta.
25. Crea una clase Alumno con nombre, nota y un metodo que diga si ha aprobado.
15. Chuleta final
Sintaxis imprescindible
Necesito... Codigo base
Mostrar print(x)
Pedir texto x = input("Texto: ")
Pedir entero x = int(input("Numero: "))
Pedir decimal x = float(input("Numero: "))
Condicion if condicion:
...
else:
...
Bucle for for x in secuencia:
...
Bucle while while condicion:
...
Funcion def nombre(parametros):
return valor
Lista vacia lista = []
Anadir a lista [Link](x)
Diccionario vacio dic = {}
Recorrer diccionario for clave, valor in [Link]():
Como pensar un ejercicio
26. Lee el enunciado y subraya entradas, proceso y salida.
27. Crea variables con nombres claros.
28. Haz primero una version simple, aunque no sea perfecta.
29. Comprueba con un ejemplo pequeno hecho a mano.
30. Anade validaciones y casos especiales: lista vacia, division entre cero, texto donde esperas numero.
31. Ordena el codigo en funciones si empieza a hacerse largo.
Checklist antes de entregar
No hay variables sin definir.
Los input numericos se convierten con int o float.
Los bloques if, for, while y def tienen dos puntos y buena indentacion.
Los indices de listas no se salen del rango.
No confundes = con ==.
El programa funciona con un caso normal y con un caso limite.
Los nombres de variables explican que guardan.
Pagina 13 de 14
Apuntes de Python
Resumen mental
Variable = guarda datos. If = decide. For/while = repite. Lista/diccionario = organiza muchos datos. Funcion = reutiliza.
Try-except = evita que un error rompa el programa. Numpy = calculo numerico. Matplotlib = graficas.
Mini resumen en una pagina
Tema Lo minimo que debes recordar
Variables nombre = valor; Python deduce el tipo
Tipos int, float, str, bool, list, tuple, dict, set
Condicionales if / elif / else con indentacion
Bucles for para recorrer; while mientras se cumpla condicion
Listas ordenadas y modificables; indices desde 0
Diccionarios pares clave-valor; muy utiles para conteos
Funciones def nombre(...): return ...
Ficheros with open(...) as f:
Errores leer el traceback y probar por partes
Numpy arrays, matrices, solve, mean, std
Matplotlib plot/scatter, xlabel, ylabel, title, show
Pagina 14 de 14