Volver a Labs
Principiante

Fundamentos de Programación en Python

2–3 horas Actualizado Junio 2026
Python Fundamentos Principiantes

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 for y while
  • 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 / 3 en Python devuelve 3.3333..., no 3. 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)True si n es primo
  • factorial(n) → factorial de n (sin recursión)
  • fibonacci(n) → lista con los primeros n nú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