PYTHON
Fundamentos de Programacion
Apuntes Completos de Clase
Materia Introduccion a la Programacion
Nivel Principiante - Intermedio
Temas Variables, Control, Funciones, POO, Archivos
APUNTES DE PYTHON Fundamentos de Programacion
1. Introduccion a Python
Python es un lenguaje de programacion interpretado, de alto nivel y proposito general. Fue creado por
Guido van Rossum y lanzado en 1991. Su filosofia hace hincapie en la legibilidad del codigo y usa una
sintaxis que permite expresar conceptos en menos lineas que otros lenguajes.
Caracteristicas principales:
• Sintaxis limpia y legible (usa indentacion en lugar de llaves)
• Lenguaje interpretado: ejecuta linea por linea
• Tipado dinamico: no necesitas declarar el tipo de variable
• Multiparadigma: soporta POO, funcional e imperativo
• Gran biblioteca estandar ('batteries included')
• Comunidad enorme y activa
Tu primer programa:
# Hola Mundo
print("Hola, Mundo!")
print("Python es genial")
Tip: Puedes ejecutar Python escribiendo 'python' o 'python3' en la terminal.
2. Variables y Tipos de Datos
Una variable es un nombre que apunta a un valor en memoria. En Python no necesitas declarar el tipo:
Python lo infiere automaticamente.
Tipos de datos basicos:
Tipo Ejemplo Descripcion
int edad = 25 Numeros enteros
float precio = 19.99 Numeros decimales
str nombre = "Ana" Cadenas de texto
bool activo = True Verdadero o Falso
list nums = [1,2,3] Lista ordenada/mutable
tuple punto = (x, y) Lista inmutable
dict d = {"a": 1} Pares clave-valor
set s = {1, 2, 3} Conjunto sin duplicados
Ejemplos de variables:
# Variables
Apuntes de Clase Pagina 2
APUNTES DE PYTHON Fundamentos de Programacion
# Enteros y flotantes
edad = 20
promedio = 8.75
# Cadenas de texto
nombre = "Maria"
apellido = 'Garcia'
completo = nombre + " " + apellido # Concatenacion
# Booleanos
es_estudiante = True
tiene_trabajo = False
# Ver el tipo de una variable
print(type(edad)) # <class 'int'>
print(type(nombre)) # <class 'str'>
Nota: Python distingue mayusculas y minusculas: 'nombre' y 'Nombre' son variables distintas.
Operadores aritmeticos:
Operador Significado Ejemplo Resultado
+ Suma 5 + 3 8
- Resta 9 - 4 5
* Multiplicacion 3 * 7 21
/ Division 10 / 4 2.5
// Div. entera 10 // 4 2
% Modulo (resto) 10 % 3 1
** Potencia 2 ** 8 256
Apuntes de Clase Pagina 3
APUNTES DE PYTHON Fundamentos de Programacion
3. Control de Flujo
Condicionales (if / elif / else):
Los condicionales permiten ejecutar bloques de codigo dependiendo de si una condicion es verdadera o
falsa. Python usa la indentacion (4 espacios) para delimitar los bloques.
# Condicional if/elif/else
nota = 75
if nota >= 90:
calificacion = 'Excelente'
elif nota >= 80:
calificacion = 'Bien'
elif nota >= 70:
calificacion = 'Regular'
else:
calificacion = 'Reprobado'
print(f'Tu calificacion es: {calificacion}')
Operadores de comparacion:
Op. Significado Op. Significado
== Igual a != Distinto de
< Menor que > Mayor que
<= Menor o igual >= Mayor o igual
and Y logico or O logico
not Negacion logica in Pertenencia
Bucle for:
El bucle for itera sobre una secuencia (lista, rango, cadena, etc.).
# Bucle for
# Iterar sobre una lista
frutas = ['manzana', 'pera', 'uva']
for fruta in frutas:
print(fruta)
# Usar range() para repetir N veces
for i in range(5): # 0, 1, 2, 3, 4
print(f'Vuelta {i}')
Apuntes de Clase Pagina 4
APUNTES DE PYTHON Fundamentos de Programacion
# range(inicio, fin, paso)
for n in range(0, 20, 2): # 0, 2, 4 ... 18
print(n, end=' ')
Bucle while:
El bucle while repite mientras la condicion sea verdadera. Cuidado con los bucles infinitos.
# Bucle while + break/continue
contador = 0
while contador < 5:
print(f'contador = {contador}')
contador += 1 # Equivale a: contador = contador + 1
# break y continue
for i in range(10):
if i == 3:
continue # Salta esta iteracion
if i == 7:
break # Sale del bucle
print(i)
Tip: Usa 'break' para salir de un bucle y 'continue' para saltar a la siguiente iteracion.
Apuntes de Clase Pagina 5
APUNTES DE PYTHON Fundamentos de Programacion
4. Funciones
Una funcion es un bloque de codigo reutilizable que realiza una tarea especifica. Se definen con la
palabra clave def y pueden recibir parametros y retornar valores.
# Funciones
# Funcion simple
def saludar(nombre):
return f"Hola, {nombre}!"
# Funcion con parametros por defecto
def potencia(base, exponente=2):
return base ** exponente
# Funcion con multiples retornos
def min_max(lista):
return min(lista), max(lista)
# Llamadas
print(saludar("Luis")) # Hola, Luis!
print(potencia(3)) # 9
print(potencia(2, 10)) # 1024
minimo, maximo = min_max([4, 1, 9, 2])
print(minimo, maximo) # 1 9
Funciones lambda (anonimas):
Las lambdas son funciones de una sola linea, utiles para operaciones simples.
# Lambda
# Equivalentes:
def cuadrado(x): return x ** 2
cuadrado = lambda x: x ** 2
# Uso con sorted()
alumnos = [('Ana', 9.5), ('Luis', 7.2), ('Bea', 8.8)]
ordenados = sorted(alumnos, key=lambda a: a[1], reverse=True)
print(ordenados) # [('Ana', 9.5), ('Bea', 8.8), ('Luis', 7.2)]
Alcance de variables (scope):
Tipo Donde existe Nota
Local Solo dentro de la funcion Se destruye al terminar
Global Todo el modulo/script Usar 'global' para modificar
Apuntes de Clase Pagina 6
APUNTES DE PYTHON Fundamentos de Programacion
Built-in En todo Python print, len, range...
Apuntes de Clase Pagina 7
APUNTES DE PYTHON Fundamentos de Programacion
5. Listas y Diccionarios
Listas:
Las listas son colecciones ordenadas y mutables. Pueden contener elementos de cualquier tipo.
# Listas
# Crear y acceder
nums = [10, 20, 30, 40, 50]
print(nums[0]) # 10 (primer elemento)
print(nums[-1]) # 50 (ultimo elemento)
print(nums[1:3]) # [20, 30] (slicing)
# Modificar
[Link](60) # Agrega al final
[Link](0, 5) # Inserta en posicion 0
[Link](30) # Elimina el valor 30
[Link]() # Elimina y retorna el ultimo
# Recorrer
for i, valor in enumerate(nums):
print(f' [{i}] = {valor}')
# List comprehension (forma Pythonica)
cuadrados = [x**2 for x in range(10)]
pares = [x for x in range(20) if x % 2 == 0]
Diccionarios:
Los diccionarios almacenan pares clave-valor. Son extremadamente utiles para representar objetos del
mundo real.
# Diccionarios
# Crear diccionario
alumno = {
"nombre": "Sofia",
"edad": 21,
"notas": [9.0, 8.5, 9.5],
"activo": True
# Acceder a valores
print(alumno["nombre"]) # Sofia
print([Link]("grado", "N/A")) # N/A (no existe)
Apuntes de Clase Pagina 8
APUNTES DE PYTHON Fundamentos de Programacion
# Agregar y modificar
alumno["carrera"] = "Sistemas"
alumno["edad"] = 22
# Recorrer
for clave, valor in [Link]():
print(f' {clave}: {valor}')
# Verificar si existe una clave
if "notas" in alumno:
promedio = sum(alumno["notas"]) / len(alumno["notas"])
print(f'Promedio: {promedio:.1f}')
Nota: Los diccionarios mantienen el orden de insercion desde Python 3.7+.
Apuntes de Clase Pagina 9
APUNTES DE PYTHON Fundamentos de Programacion
6. Programacion Orientada a Objetos
La Programacion Orientada a Objetos (POO) organiza el codigo en clases que definen la estructura y
comportamiento de objetos. Los pilares de la POO son: Encapsulacion, Herencia, Polimorfismo y
Abstraccion.
# Clases y Herencia
class Estudiante:
"""Representa a un estudiante universitario."""
universidad = 'UNAM' # Atributo de clase
def __init__(self, nombre, matricula, carrera):
[Link] = nombre # Atributo publico
[Link] = matricula
[Link] = carrera
self._notas = [] # Atributo 'protegido'
def agregar_nota(self, nota):
if 0 <= nota <= 10:
self._notas.append(nota)
@property
def promedio(self):
if not self._notas:
return 0
return sum(self._notas) / len(self._notas)
def __str__(self):
return f"{[Link]} ({[Link]}) - Prom: {[Link]:.1f}"
# Herencia
class Posgrado(Estudiante):
def __init__(self, nombre, matricula, carrera, tesis):
super().__init__(nombre, matricula, carrera)
[Link] = tesis
def __str__(self):
base = super().__str__()
return f"{base} | Tesis: {[Link]}"
# Uso
e1 = Estudiante("Carlos", "2024001", "Informatica")
e1.agregar_nota(9.0)
Apuntes de Clase Pagina 10
APUNTES DE PYTHON Fundamentos de Programacion
e1.agregar_nota(8.5)
print(e1) # Carlos (2024001) - Prom: 8.8
Conceptos clave de POO:
Concepto Descripcion Ejemplo en Python
Clase Molde/plantilla para crear objetos class Persona: ...
Objeto Instancia concreta de una clase p = Persona(...)
Atributo Variable que pertenece al objeto [Link] = ...
Metodo Funcion que pertenece a la clase def saludar(self):
Herencia Una clase hereda de otra class B(A): ...
Polimorfismo Mismo metodo, distinto comportamiento super().__init__()
Apuntes de Clase Pagina 11
APUNTES DE PYTHON Fundamentos de Programacion
7. Archivos y Manejo de Errores
Lectura y escritura de archivos:
# Archivos
# Escribir un archivo
with open("[Link]", "w", encoding="utf-8") as f:
[Link]("Primera linea\n")
[Link]("Segunda linea\n")
# Leer todo el archivo
with open("[Link]", "r", encoding="utf-8") as f:
contenido = [Link]()
print(contenido)
# Leer linea por linea (eficiente para archivos grandes)
with open("[Link]", "r") as f:
for linea in f:
print([Link]())
# Modos de apertura:
# 'r' -> lectura (default)
# 'w' -> escritura (sobreescribe)
# 'a' -> agregar al final
# 'rb' -> lectura binaria
Manejo de excepciones (try/except):
Los errores en tiempo de ejecucion se llaman excepciones. Python permite atraparlas y manejarlas para
que el programa no falle abruptamente.
# try / except / else / finally
try:
numero = int(input("Ingresa un numero: "))
resultado = 100 / 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}")
Apuntes de Clase Pagina 12
APUNTES DE PYTHON Fundamentos de Programacion
else:
print("Todo salio bien!")
finally:
print("Esto siempre se ejecuta")
Tip: Siempre usa 'with open(...)' para abrir archivos: cierra el archivo automaticamente aunque ocurra un
error.
Nota: La clausula 'finally' se ejecuta SIEMPRE, sin importar si hubo error o no. Ideal para liberar recursos.
Apuntes de Clase Pagina 13
APUNTES DE PYTHON Fundamentos de Programacion
Resumen Rapido - Cheatsheet
Concepto Sintaxis Descripcion
Variable x = 5 Asignar valor
Comentario # esto es comentario Ignorado por Python
Print print("hola") Mostrar en pantalla
Input input("Nombre: ") Leer del usuario
Conversion int("5"), str(3) Cambiar tipo
f-string f"Hola {nombre}" Cadena con variables
Longitud len(lista) Numero de elementos
Ordenar sorted(lista) Retorna lista ordenada
Rango range(inicio, fin, paso) Secuencia de numeros
Comprension lista [expr for x in seq] Lista en una linea
Funcion def nombre(params): Definir funcion
Clase class Nombre: Definir clase
Importar import modulo Usar libreria
Excepcion try: ... except E: Manejar errores
Recuerda: la mejor manera de aprender a programar es practicar todos los dias. Escribe codigo,
comete errores y aprende de ellos.
Apuntes de Clase Pagina 14