JSON a diccionario
Convertí un texto JSON a diccionario. Pista: json.loads. Ejemplo: de_json('{"nivel": 25}') → {"nivel": 25}
Entrá y llevá tu progreso —ejercicios, medallas y Pokémon— a cualquier dispositivo. 🔄
Si tu cuenta ya tiene progreso guardado, se carga ese al entrar.
Entraste como . Tu progreso se sincroniza solo. 🔄
Convertí un texto JSON a diccionario. Pista: json.loads. Ejemplo: de_json('{"nivel": 25}') → {"nivel": 25}
🎯 Meta: usar código que ya escribieron otros. Vas a aprender a importar módulos de Python, instalar librerías con pip, y hasta consultar datos reales de internet con la PokéAPI.
En los juegos Pokémon, las MT te enseñan ataques poderosos sin tener que entrenarlos desde cero. Las metés y listo, tu Pokémon ya sabe Rayo.
Los módulos y librerías son las MT del programador: código ya hecho que importás y usás. No reinventás la rueda: aprovechás el trabajo de millones de personas. 🧠
Un módulo es un archivo de Python lleno de funciones útiles. Python trae muchos “de fábrica” (la librería estándar). Para usarlos, los importás.
import math
print(math.sqrt(16)) # 4.0 (raíz cuadrada)
print(math.pi) # 3.141592653589793
print(math.ceil(4.2)) # 5 (redondea para arriba)
import math # importás todo el módulo, usás math.algo
from math import sqrt # importás solo sqrt, lo usás directo
from math import sqrt, pi # varios
import math as m # le ponés un apodo: m.sqrt(16)
P: ¿Qué diferencia hay entre `import math` y `from math import sqrt`?
- Ninguna, hacen lo mismo
+ Con `import math` usás `math.sqrt()`; con `from math import sqrt` usás `sqrt()` directo
- `from math import sqrt` descarga una versión más nueva de `math`
> La segunda forma importa solo la función `sqrt` al espacio de nombres local, así la llamás sin el prefijo `math.`. Útil cuando usás mucho esa función.
math — matemáticaimport math
math.sqrt(25) # 5.0
math.ceil(4.1) # 5
math.floor(4.9) # 4
math.pow(2, 3) # 8.0
random — azarimport random
random.randint(1, 6) # número al azar entre 1 y 6 (dado)
random.choice(["Pikachu", "Onix"]) # elige uno al azar de la lista
random.shuffle(equipo) # mezcla la lista (la modifica)
datetime — fechas y horasfrom datetime import datetime, date
date.today() # la fecha de hoy
datetime.now() # fecha y hora ahora
date.today().isoformat() # "2024-06-04" (texto estándar)
datetime.now().year # el año actual
os y sys — sistemaimport os
os.path.exists("datos.txt") # ¿existe el archivo? True/False
os.path.basename("/a/b/c.txt")# "c.txt" (solo el nombre)
import sys
sys.argv # lista de argumentos pasados al programa
sys.exit() # termina el programa
json — guardar/cargar datos estructuradosimport json
datos = {"nombre": "Pikachu", "nivel": 25}
texto = json.dumps(datos) # dict -> texto JSON
print(texto) # {"nombre": "Pikachu", "nivel": 25}
recuperado = json.loads(texto) # texto JSON -> dict
print(recuperado["nombre"]) # Pikachu
# Guardar y cargar archivos JSON
with open("pokemon.json", "w") as f:
json.dump(datos, f)
with open("pokemon.json", "r") as f:
datos = json.load(f)
💡 JSON es el formato para guardar datos estructurados. Lo vas a usar en los proyectos finales. ¡Prestale atención!
Cualquier archivo .py tuyo es un módulo que podés importar desde otro archivo. ¡Así organizás proyectos grandes!
Archivo pokeutils.py:
def formatear_nombre(nombre):
return nombre.capitalize()
def es_legendario(nombre):
return nombre.lower() in ["mewtwo", "mew", "articuno"]
Archivo main.py (en la misma carpeta):
import pokeutils
print(pokeutils.formatear_nombre("pikachu")) # Pikachu
print(pokeutils.es_legendario("Mewtwo")) # True
💡 Acá tenés un pokeutils.py de ejemplo. Miralo: así se ven los módulos propios.
La librería estándar es enorme, pero a veces necesitás algo que no viene. pip es el instalador de paquetes de Python: tu PokéMart de librerías.
pip install requests # instala la librería 'requests'
pip install flask # instala Flask (para apps web)
pip list # muestra lo que tenés instalado
pip uninstall requests # la desinstala
Un entorno virtual (venv) es una “cajita” aislada con sus propias librerías, separada del Python del sistema. Así cada proyecto tiene sus versiones sin pisarse.
python3 -m venv venv # crea el entorno en la carpeta 'venv'
source venv/bin/activate # lo activás (Linux/Mac)
pip install requests # instala DENTRO del venv
deactivate # lo desactivás
💡 El setup.sh del curso hace esto por vos. Pero ahora entendés qué hace. 😎
Un archivo requirements.txt lista las librerías que tu proyecto necesita, para que cualquiera las instale de un saque:
requests>=2.31
flask>=3.0
Se instalan todas juntas con:
pip install -r requirements.txt
P: ¿Para qué sirve un entorno virtual (`venv`)?
- Para correr Python más rápido
+ Para tener las librerías de cada proyecto aisladas, sin mezclarse
- Para instalar Python sin necesitar permisos de administrador
> Cada proyecto puede tener sus propias versiones de librerías sin pisar las de otros proyectos. Es la práctica estándar en proyectos Python reales.
Una API es un servicio en internet que te devuelve datos. La PokéAPI (https://pokeapi.co) tiene datos de TODOS los Pokémon, gratis.
La librería requests te deja pedir esos datos:
import requests
# Pedimos los datos de Pikachu.
respuesta = requests.get("https://pokeapi.co/api/v2/pokemon/pikachu")
# .json() convierte la respuesta a un diccionario de Python.
datos = respuesta.json()
print(datos["name"]) # pikachu
print(datos["height"]) # altura
print(datos["weight"]) # peso
print(datos["types"][0]["type"]["name"])# electric
⚠️ Para usar requests necesitás internet y tenerla instalada (pip install requests). Tené en cuenta el caso de “no hay internet” para que tu código no se rompa.
# Importar módulos estándar
import math, random, json, os
from datetime import date
math.sqrt(16) # 4.0
random.choice(["a", "b"]) # uno al azar
json.dumps({"x": 1}) # '{"x": 1}'
date.today().isoformat() # fecha de hoy
# Módulo propio
import pokeutils
pokeutils.formatear_nombre("pikachu")
# Instalar librerías
# pip install requests
# pip install -r requirements.txt
# Consumir una API
import requests
datos = requests.get("https://pokeapi.co/api/v2/pokemon/pikachu").json()
| Concepto | Para qué sirve |
|---|---|
import | Traer código de otros |
math/random/json/os/datetime | Módulos estándar |
| módulo propio | Tu propio .py reutilizable |
pip | Instalar librerías externas |
venv | Entorno aislado por proyecto |
requirements.txt | Lista de dependencias |
requests | Pedir datos a una API |
Ahora practicá: andá a los ejercicios de este tema y resolvelos. Se corrigen al instante con tests reales en tu navegador. 💪
⚡ “El mejor programador no es el que escribe más código, sino el que sabe reusar el de los demás.”