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.
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:
# 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
# ── 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
# 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
# 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.")
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.
# 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
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
# 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
# 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 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.
# 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.
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.
# *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.
# 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.
# 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.
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.
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.
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.
# 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}")
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.
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}")
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.
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.
Creá un juego donde la computadora "piensa" un número del 1 al 100 y el usuario debe adivinarlo.
- Usá el módulo
randomconrandom.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.
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
whilepara mantener el menú activo.
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.