🏠 Inicio 🌍 Página Principal 🐍 Python Básico 🔬 Python Intermedio 🖥️ Tkinter 🌐 HTML 🎨 CSS ⚡ JavaScript 🗃️ SQL

Introducción a Python

Python es un lenguaje de programación de alto nivel, interpretado y de propósito general. Fue creado por Guido van Rossum y publicado en 1991. Es conocido por su sintaxis clara y legible, lo que lo convierte en el lenguaje ideal para aprender a programar.

Hoy en día Python se usa en: desarrollo web (Django, Flask), ciencia de datos, inteligencia artificial, automatización, scripting, y mucho más.

💡
¿Por qué Python?

Su sintaxis es casi como pseudocódigo, lo que permite concentrarse en la lógica sin preocuparse por detalles técnicos del lenguaje.

Tu primer programa

La tradición en programación es hacer que tu primer programa imprima "Hola Mundo". En Python es muy simple:

Python
# Este es tu primer programa en Python
print("¡Hola Mundo!")
print("Bienvenido a Python")

La función print() muestra texto en pantalla. Es la función más básica y la usaremos constantemente.

Variables y Tipos de Datos

Una variable es un espacio en la memoria donde guardamos información. En Python, no necesitás declarar el tipo de la variable, Python lo detecta automáticamente.

Tipos básicos de datos

Python
# ── Enteros (int) ──────────────────
edad = 17
cantidad_alumnos = 30

# ── Decimales (float) ──────────────
nota = 8.75
precio = 1299.99

# ── Texto (str) ────────────────────
nombre = "Ana García"
mensaje = 'Hola, ¿cómo estás?'

# ── Booleanos (bool) ───────────────
aprobado = True
inscripto = False

# Verificar el tipo de dato
print(type(edad))      # <class 'int'>
print(type(nota))      # <class 'float'>
print(type(nombre))    # <class 'str'>
print(type(aprobado))  # <class 'bool'>

Operaciones con variables

Python
# Operaciones matemáticas
a = 10
b = 3

print(a + b)   # 13 - suma
print(a - b)   # 7  - resta
print(a * b)   # 30 - multiplicación
print(a / b)   # 3.33... - división real
print(a // b)  # 3  - división entera
print(a % b)   # 1  - módulo (resto)
print(a ** b)  # 1000 - potencia

# Concatenación de strings
nombre = "Luis"
saludo = "Hola, " + nombre + "!"
print(saludo)      # "Hola, Luis!"

# f-strings (la forma moderna y recomendada)
edad = 18
print(f"Me llamo {nombre} y tengo {edad} años.")

Entrada del usuario

Python
# input() siempre devuelve un string
nombre = input("Ingresá tu nombre: ")
print(f"Hola, {nombre}!")

# Para números, hay que convertir
edad = int(input("Ingresá tu edad: "))
print(f"En 5 años vas a tener {edad + 5} años.")
⚠️
¡Importante!

input() siempre devuelve texto (string). Si necesitás operar matemáticamente, convertí con int() o float().

Condicionales (if / elif / else)

Los condicionales permiten que el programa tome decisiones basadas en condiciones. Python usa la indentación (4 espacios) para definir bloques de código, no llaves como otros lenguajes.

Python
# Estructura básica
edad = 18

if edad >= 18:
    print("Sos mayor de edad")
elif edad >= 13:
    print("Sos adolescente")
else:
    print("Sos niño/a")

# Operadores de comparación
# ==  igual a
# !=  distinto de
# >   mayor que
# <   menor que
# >=  mayor o igual
# <=  menor o igual

# Operadores lógicos: and, or, not
nota = 7
asistencia = 85

if nota >= 6 and asistencia >= 75:
    print("Aprobaste la materia 🎉")
else:
    print("No cumpliste los requisitos")

Ejemplo práctico: Calculadora de notas

Python
nota = float(input("Ingresá tu nota (0-10): "))

if nota < 0 or nota > 10:
    print("Nota fuera de rango")
elif nota >= 9:
    print("Sobresaliente ⭐")
elif nota >= 7:
    print("Muy bueno ✅")
elif nota >= 6:
    print("Aprobado ✓")
else:
    print("Desaprobado ✗")

Bucles (for y while)

Los bucles permiten repetir bloques de código. Python tiene dos tipos principales: for (para iterar sobre secuencias) y while (mientras se cumpla una condición).

Bucle for

Python
# range(inicio, fin, paso) — fin NO se incluye
for i in range(1, 6):
    print(f"Número: {i}")
# Imprime: 1, 2, 3, 4, 5

# Iterar sobre una lista
frutas = ["manzana", "pera", "uva"]
for fruta in frutas:
    print(f"Me gusta la {fruta}")

# enumerate() para obtener índice y valor
for indice, fruta in enumerate(frutas):
    print(f"{indice}: {fruta}")

Bucle while

Python
# Repetir mientras la condición sea True
contador = 1
while contador <= 5:
    print(f"Vuelta número {contador}")
    contador += 1  # ¡Siempre actualizá la variable!

# Ejemplo: pedir número hasta que sea válido
numero = 0
while numero <= 0:
    numero = int(input("Ingresá un número positivo: "))
    if numero <= 0:
        print("Debe ser mayor a cero, intentá de nuevo.")
print(f"¡Perfecto! Ingresaste: {numero}")
break y continue

break sale del bucle inmediatamente. continue salta a la siguiente iteración sin ejecutar el resto del bloque.

Funciones

Una función es un bloque de código reutilizable que realiza una tarea específica. Permiten organizar el código, evitar repetición y hacerlo más legible.

Python
# Definir una función
def saludar(nombre):
    print(f"¡Hola, {nombre}!")

# Llamar a la función
saludar("María")   # ¡Hola, María!
saludar("Carlos")  # ¡Hola, Carlos!

# Función que retorna un valor
def sumar(a, b):
    return a + b

resultado = sumar(5, 3)
print(f"La suma es: {resultado}")  # 8

# Parámetros con valor por defecto
def presentar(nombre, rol="estudiante"):
    print(f"{nombre} es {rol}")

presentar("Ana")                # Ana es estudiante
presentar("Gatica", "profesor")  # Gatica es profesor

Ámbito de Variables (Scope)

Las variables creadas dentro de una función son locales y no se pueden usar fuera de ella. Las variables creadas fuera son globales.

Python
mensaje_global = "Hola a todos"

def mi_funcion():
    mensaje_local = "Esto es privado de la función"
    print(mensaje_global) # Funciona!
    
mi_funcion()
# print(mensaje_local) # ¡Error! La variable no existe fuera

Argumentos Arbitrarios (*args y **kwargs)

A veces no sabemos cuántos argumentos recibiremos. Python permite recibir tuplas o diccionarios de argumentos indefinidos.

Python
# *args: Recibe valores simples en forma de Tupla
def sumar_varios(*numeros):
    return sum(numeros)

print(sumar_varios(1, 2, 3, 4, 5)) # 15

# **kwargs: Recibe parámetros con nombre en forma de Diccionario
def mostrar_perfil(**datos):
    for clave, valor in datos.items():
        print(f"{clave}: {valor}")

mostrar_perfil(nombre="Ana", edad=25, ciudad="Buenos Aires")

Listas

Una lista es una colección ordenada y mutable de elementos. Pueden contener cualquier tipo de dato, incluso mezclarlos.

Python
# Crear listas
notas = [8, 7, 9, 6, 10]
nombres = ["Ana", "Luis", "Pedro"]

# Acceder por índice (empieza en 0)
print(notas[0])    # 8 (primero)
print(notas[-1])   # 10 (último)
print(notas[1:4])  # [7, 9, 6] (slice)

# Métodos más usados
notas.append(8)     # Agregar al final
notas.remove(6)     # Eliminar primer 6
notas.sort()         # Ordenar
notas.reverse()      # Invertir

print(len(notas))    # Cantidad de elementos
print(sum(notas))    # Suma total
print(max(notas))    # Valor máximo
print(min(notas))    # Valor mínimo

# Comprensión de listas (list comprehension)
dobles = [n * 2 for n in notas]
aprobadas = [n for n in notas if n >= 6]

Tuplas, Diccionarios y Sets

Aparte de las Listas, Python cuenta con otras estructuras de datos importantísimas nativas para organizar nuestra información de distintas maneras.

Tuplas (Tuples)

Son idénticas a las listas, pero son inmutables (no se pueden modificar, agregar o eliminar elementos una vez creadas). Se usan para datos fijos y son más rápidas y seguras.

Python
# Se crean con paréntesis en lugar de corchetes
coordenadas = (4.5, -2.1)
colores_rgb = (255, 0, 0)

# colores_rgb[0] = 0  # ¡ERROR! Las tuplas no se pueden modificar

print(coordenadas[1]) # -2.1

Diccionarios (Dicts)

Almacenan datos en pares de Clave: Valor. Son mutables y extremadamente eficientes para buscar información basada en una clave personalizada.

Python
alumno = {
    "nombre": "Ana",
    "edad": 17,
    "notas": [9, 8, 10]
}

print(alumno["nombre"])  # Ana

# Agregar nuevo par clave-valor
alumno["curso"] = "Python" 
# Modificar un valor existente
alumno["edad"] = 18

print(alumno.keys())   # dict_keys(['nombre', 'edad', 'notas', 'curso'])
print(alumno.values()) # dict_values(['Ana', 18, [9, 8, 10], 'Python'])

Conjuntos (Sets)

Son colecciones desordenadas de elementos únicos (no permiten datos repetidos automáticamente). Muy útiles para operaciones como unión o intersección.

Python
numeros_set = {1, 2, 2, 3, 4, 4, 5}
print(numeros_set)  # {1, 2, 3, 4, 5} (elimina repetidos)

numeros_set.add(6)
numeros_set.remove(1)

A = {1, 2, 3}
B = {3, 4, 5}
print(A.union(B))         # {1, 2, 3, 4, 5}
print(A.intersection(B))  # {3}

Ejercicios Resueltos

Estos ejercicios incluyen la solución paso a paso. Intentá resolverlos antes de ver la respuesta.

EJERCICIO 1 Calculadora de promedio

Pedí 3 notas al usuario y mostrá el promedio. Indicá si aprobó (promedio ≥ 6).

Explicación paso a paso:

  • 1Pedimos 3 notas con input() y las convertimos a float.
  • 2Calculamos el promedio sumando y dividiendo por 3.
  • 3Usamos un if/else para determinar si aprobó.
  • 4Mostramos el resultado con f-string formateado a 2 decimales.
Python — Solución
# Pedimos las 3 notas
nota1 = float(input("Nota 1: "))
nota2 = float(input("Nota 2: "))
nota3 = float(input("Nota 3: "))

# Calculamos el promedio
promedio = (nota1 + nota2 + nota3) / 3

# Evaluamos el resultado
if promedio >= 6:
    estado = "Aprobado ✅"
else:
    estado = "Desaprobado ❌"

print(f"\nPromedio: {promedio:.2f}")
print(f"Estado: {estado}")
EJERCICIO 2 Tabla de multiplicar

Pedí un número y mostrá su tabla de multiplicar del 1 al 10.

  • 1Pedimos el número a multiplicar.
  • 2Usamos un for con range(1, 11) para ir del 1 al 10.
  • 3Dentro del bucle, imprimimos la multiplicación formateada.
Python — Solución
numero = int(input("¿Tabla de qué número? "))

print(f"\n--- Tabla del {numero} ---")
for i in range(1, 11):
    resultado = numero * i
    print(f"{numero} x {i:2} = {resultado:3}")
EJERCICIO 3 Función factorización

Escribí una función que calcule el factorial de un número entero positivo.

  • 1Definimos la función factorial(n).
  • 2Validamos que n sea mayor o igual a 0.
  • 3Caso base: factorial(0) = 1.
  • 4Usamos un bucle for para multiplicar desde 1 hasta n.
Python — Solución
def factorial(n):
    if n < 0:
        return "Error: número negativo"
    resultado = 1
    for i in range(1, n + 1):
        resultado *= i   # resultado = resultado * i
    return resultado

# Probamos la función
print(factorial(0))   # 1
print(factorial(5))   # 120 (5×4×3×2×1)
print(factorial(10))  # 3628800

Ejercicios Propuestos

Estos ejercicios son para que los resuelvas vos. ¡No te rindas! Si te trabás, revisá las secciones anteriores.

PROPUESTO 1 Adivina el número

Creá un juego donde la computadora "piensa" un número del 1 al 100 y el usuario debe adivinarlo.

  • Usá el módulo random con random.randint(1, 100).
  • Si el usuario falla, indicá si debe adivinar "más alto" o "más bajo".
  • Contá cuántos intentos tardó.
  • Poné un límite de 10 intentos.
PROPUESTO 2 Gestor de lista de compras

Creá un programa de consola con menú para manejar una lista de compras.

  • Opción 1: Agregar ítem.
  • Opción 2: Eliminar ítem.
  • Opción 3: Mostrar todos los ítems.
  • Opción 4: Salir.
  • Usá un bucle while para mantener el menú activo.
PROPUESTO 3 Análisis de notas

Pedí notas hasta que el usuario ingrese -1 para terminar. Luego mostrá:

  • Cantidad total de notas ingresadas.
  • Promedio general.
  • Nota más alta y más baja.
  • Cantidad de aprobados y desaprobados.