Introducción
Python es uno de los lenguajes más populares del mundo y, a menudo, el mejor punto de entrada para quien empieza a programar. Su sintaxis se parece al inglés natural, no necesita compilar antes de ejecutar y viene con todo lo necesario instalado.
Se usa en desarrollo web, ciencia de datos, inteligencia artificial, automatización, scripting y muchos campos más.
¿Qué vas a aprender en este lab?
- Escribir y ejecutar tu primer programa Python
- Usar variables y tipos de datos
- Operar con números, texto y booleanos
- Tomar decisiones con
if / elif / else - Repetir acciones con
forywhile - Organizar código en funciones
Requisitos previos: ninguno. Solo necesitas Python 3.10+ instalado y un editor de texto.
0. Tu primer programa: Hola Mundo
Crea un archivo hola.py y escribe:
print("¡Hola, mundo!")
Ejecútalo desde la terminal:
python hola.py
Salida:
¡Hola, mundo!
En Python no hay clases obligatorias ni main. El código se ejecuta línea a línea desde arriba.
print() es una función integrada que muestra texto en la consola. Los textos van entre comillas simples '...' o dobles "..." — ambas funcionan igual.
Ejercicio 0
Crea presentacion.py que imprima tu nombre, tu edad y qué quieres aprender a programar. Usa tres llamadas a print().
1. Variables y Tipos de Datos
En Python no declaras el tipo de la variable — Python lo infiere automáticamente del valor que asignas.
nombre = "Julian" # str — texto
edad = 25 # int — entero
altura = 1.78 # float — decimal
es_activo = True # bool — verdadero/falso
Tipos básicos
| Tipo | Ejemplo | Para qué |
|---|---|---|
int |
42, -7 |
Números enteros |
float |
3.14, -0.5 |
Números decimales |
str |
"hola", 'mundo' |
Texto |
bool |
True, False |
Verdadero/falso |
None |
None |
Ausencia de valor |
Verificar el tipo
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hola")) # <class 'str'>
print(type(True)) # <class 'bool'>
Strings — operaciones frecuentes
saludo = "Hola"
nombre = "Julian"
# Concatenar con +
mensaje = saludo + ", " + nombre + "!"
print(mensaje) # Hola, Julian!
# f-strings (la forma moderna y recomendada)
print(f"Hola, {nombre}! Tienes {edad} años.") # Hola, Julian! Tienes 25 años.
# Métodos de string
texto = " Python es genial "
print(texto.strip()) # "Python es genial"
print(texto.upper()) # " PYTHON ES GENIAL "
print(texto.replace("genial", "increíble")) # " Python es increíble "
print(len(texto)) # 20
print("Python" in texto) # True
Conversión de tipos
numero_str = "42"
numero_int = int(numero_str) # str → int
numero_float = float("3.14") # str → float
texto = str(100) # int → str
print(numero_int + 8) # 50
Ejercicio 1
Pide al usuario su nombre (input("¿Tu nombre? ")), su año de nacimiento (conviértelo a int) y calcula su edad. Imprime un mensaje con f-string que diga: "Hola, [nombre]! Tienes aproximadamente [edad] años.".
2. Operadores
Aritméticos
a, b = 10, 3
print(a + b) # 13 — suma
print(a - b) # 7 — resta
print(a * b) # 30 — multiplicación
print(a / b) # 3.3333... — división (siempre devuelve float)
print(a // b) # 3 — división entera (descarta decimales)
print(a % b) # 1 — módulo (resto)
print(a ** b) # 1000 — potencia (10³)
A diferencia de Java,
10 / 3en Python devuelve3.3333..., no3. Para división entera usa//.
Comparación (devuelven bool)
x, y = 5, 8
print(x == y) # False
print(x != y) # True
print(x < y) # True
print(x >= y) # False
Lógicos
edad = 20
tiene_dni = True
print(edad >= 18 and tiene_dni) # True — ambas verdaderas
print(edad < 18 or tiene_dni) # True — al menos una verdadera
print(not tiene_dni) # False — inversión
Asignación compuesta
contador = 0
contador += 5 # contador = contador + 5 → 5
contador *= 2 # contador = contador * 2 → 10
contador -= 3 # contador = contador - 3 → 7
Ejercicio 2
Escribe un programa que calcule el índice de masa corporal (IMC = peso / altura²). Imprime el IMC con dos decimales usando f-string: f"{imc:.2f}". Clasifica el resultado: bajo peso (< 18.5), normal (18.5–24.9), sobrepeso (25–29.9), obesidad (≥ 30).
3. Condicionales
nota = 75
if nota >= 90:
print("Excelente")
elif nota >= 70:
print("Aprobado")
elif nota >= 50:
print("Recuperación")
else:
print("Reprobado")
# Aprobado
Diferencia clave con Java: Python usa : al final de cada condición y la indentación (espacios) define los bloques, no {}. Si la indentación es incorrecta, el programa falla.
Operador ternario
edad = 20
estado = "mayor de edad" if edad >= 18 else "menor de edad"
print(estado) # mayor de edad
match — switch en Python (3.10+)
dia = 3
match dia:
case 1: print("Lunes")
case 2: print("Martes")
case 3: print("Miércoles")
case 4 | 5: print("Jueves o Viernes")
case _: print("Fin de semana")
# Miércoles
Ejercicio 3
Escribe un programa que lea una hora (0–23) e imprima el saludo correspondiente:
- 6–11 → "Buenos días"
- 12–17 → "Buenas tardes"
- 18–21 → "Buenas noches"
- cualquier otra → "Hora no válida"
4. Bucles
for — iterar sobre una secuencia
# Iterar sobre un rango de números
for i in range(1, 6):
print(f"Iteración {i}")
# Iteración 1
# Iteración 2
# ... hasta 5
# Iterar sobre una lista
frutas = ["manzana", "naranja", "pera"]
for fruta in frutas:
print(fruta)
# range con paso
for i in range(0, 20, 5): # 0, 5, 10, 15
print(i)
while
numero = 1
while numero <= 100:
numero *= 2
print(f"Primer número mayor a 100: {numero}") # 128
break y continue
# break — sale del bucle
for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4
# continue — salta a la siguiente iteración
for i in range(10):
if i % 2 == 0:
continue
print(i) # 1, 3, 5, 7, 9
enumerate — índice + valor
colores = ["rojo", "verde", "azul"]
for i, color in enumerate(colores):
print(f"{i}: {color}")
# 0: rojo
# 1: verde
# 2: azul
Ejercicio 4
Escribe un programa que imprima el triángulo de Pascal para las primeras 6 filas. Pista: cada fila n tiene n+1 elementos donde el primero y el último son 1 y cada interior es la suma de los dos de la fila anterior.
5. Funciones
Una función agrupa código reutilizable bajo un nombre.
def saludar(nombre):
print(f"¡Hola, {nombre}!")
saludar("Julian") # ¡Hola, Julian!
saludar("Ana") # ¡Hola, Ana!
Parámetros y retorno
def sumar(a, b):
return a + b
resultado = sumar(10, 5)
print(resultado) # 15
Parámetros con valor por defecto
def presentar(nombre, pais="Colombia"):
return f"{nombre} es de {pais}"
print(presentar("Julian")) # Julian es de Colombia
print(presentar("Ana", "México")) # Ana es de México
Parámetros con nombre (keyword arguments)
def crear_perfil(nombre, edad, activo=True):
return f"{nombre}, {edad} años, activo={activo}"
print(crear_perfil(edad=25, nombre="Julian")) # Julian, 25 años, activo=True
Retorno múltiple
def dividir_con_resto(a, b):
cociente = a // b
resto = a % b
return cociente, resto # devuelve una tupla
c, r = dividir_con_resto(17, 5)
print(f"17 / 5 = {c} con resto {r}") # 17 / 5 = 3 con resto 2
Funciones lambda (anónimas)
cuadrado = lambda x: x ** 2
print(cuadrado(7)) # 49
# Útil como argumento de otras funciones
numeros = [5, 2, 8, 1, 9]
ordenados = sorted(numeros, key=lambda x: -x) # orden descendente
print(ordenados) # [9, 8, 5, 2, 1]
Ejercicio 5
Crea un módulo matematicas.py con estas funciones:
es_primo(n)→Truesines primofactorial(n)→ factorial den(sin recursión)fibonacci(n)→ lista con los primerosnnúmeros de Fibonacci
Pruébalas en main.py importando el módulo con from matematicas import es_primo, factorial, fibonacci.
6. Errores Comunes
Error 1 — IndentationError: mezclar tabs y espacios
# Mezcla de indentación (tab vs espacios)
def saludar():
print("Hola") # 4 espacios
print("Mundo") # tab → IndentationError
# Usa siempre 4 espacios (el estándar de Python)
def saludar():
print("Hola")
print("Mundo")
Error 2 — TypeError al concatenar string con número
edad = 25
# No puedes sumar str + int
print("Tengo " + edad + " años") # TypeError
# Convierte o usa f-string
print("Tengo " + str(edad) + " años") # OK
print(f"Tengo {edad} años") # Mejor
Error 3 — Modificar una variable global dentro de una función
contador = 0
# Esto crea una variable LOCAL llamada contador, no modifica la global
def incrementar():
contador += 1 # UnboundLocalError
# Declara que vas a usar la variable global
def incrementar():
global contador
contador += 1
Error 4 — Comparar con == en lugar de is para None
valor = None
# Técnicamente funciona, pero no es idiomático
if valor == None:
print("Es None")
# Usa is / is not para comparar con None
if valor is None:
print("Es None")
Resumen
| Concepto | Python |
|---|---|
| Tipos | int, float, str, bool, None |
| Texto interpolado | f"Hola, {nombre}" |
| Condicional | if / elif / else con : e indentación |
| Bucle contado | for i in range(n): |
| Bucle condicional | while condicion: |
| Función | def nombre(params): return valor |
Próximos pasos
- Listas y Diccionarios: las estructuras de datos más usadas en Python
- Programación Orientada a Objetos en Python: clases,
__init__, herencia - Módulos y paquetes: organizar tu código en archivos y carpetas