Cómo revisar código escrito por IA con una checklist práctica
El código generado por IA puede parecer completo y aun así contener supuestos ocultos sobre entradas, casos límite, dependencias y errores. Esta guía usa un ejemplo CSV sintético pequeño para revisar el código de forma sistemática antes de utilizarlo con datos reales.
Contenido revisado 2026.09.21Incluye archivos de ejemplo
Ver el índice
La traducción se ha realizado con IA. Comprueba el código, las unidades y los valores junto con el original. La revisión por hablantes nativos de cada idioma aún no se ha completado. English
Para quién esPara personas que usan un asistente de chat con IA para crear pequeños scripts de Python y quieren revisarlos de forma repetible antes de aplicarlos a datos reales.
Preparación
Python 3.12
Conocimientos básicos para ejecutar scripts de Python y entender archivos CSV
01Por qué también hay que revisar el código escrito por IA
Un asistente de chat con IA puede producir código sintácticamente plausible con rapidez, pero que parezca correcto no significa que lo sea. Un script puede asumir que todas las filas de entrada están completas, interpretar mal una columna, sobrescribir un resultado existente, depender de un paquete que no tienes instalado o fallar solo cuando recibe un valor poco habitual. Por eso, no basta con comprobar si el código parece razonable. Hay que revisar sus supuestos uno por uno.
Una revisión compacta puede organizarse en cinco preguntas: ¿qué entradas espera el código?, ¿qué ocurre en los casos límite?, ¿cómo gestiona los errores?, ¿qué dependencias necesita?, ¿qué pruebas revelarían un resultado incorrecto? También conviene revisar el comportamiento de salida, porque un cálculo correcto puede seguir siendo inseguro si sobrescribe archivos existentes.
02Empieza con un ejemplo sintético pequeño
Supongamos que tienes un archivo sintético llamado orders.csv. Tiene tres columnas: order_id, quantity y unit_price. Las tres filas de datos son A001,2,10.00; A002,3,5.50; y A003,1,8.00. Los ingresos esperados se pueden calcular fácilmente a mano: 2 × 10.00 = 20.00, 3 × 5.50 = 16.50 y 1 × 8.00 = 8.00. Por tanto, el total debe ser 44.50 para 6 unidades.
Mantener el primer ejemplo tan pequeño es importante. Si un script producido por IA devuelve 44.50, puedes verificar el valor de forma independiente. Si empiezas directamente con un archivo de trabajo de 50,000 filas, un resultado aparentemente razonable puede ocultar un error de lectura o cálculo.
order_id
quantity
unit_price
ingresos esperados
A001
2
10.00
20.00
A002
3
5.50
16.50
A003
1
8.00
8.00
Total
6
44.50
03Pide reglas explícitas de entrada y salida
Es mejor especificar el formato del archivo, el cálculo, el comportamiento ante errores y la política de salida en lugar de pedir simplemente un script que resuma las ventas.
Indica que orders.csv debe contener order_id, quantity y unit_price.
Pide que el script rechace valores ausentes o números no válidos en vez de adivinarlos.
Pide que calcule la cantidad total y los ingresos totales.
Exige solo la biblioteca estándar de Python 3.12.
Exige que los resultados se escriban en la carpeta outputs y que el script se detenga si el archivo de salida previsto ya existe.
04Inspecciona una respuesta típica de la IA
Una respuesta razonable puede usar csv.DictReader, Decimal para importes monetarios, pathlib para las rutas y validación explícita. Aunque el código se vea limpio, revisa cada condición y cada rama en lugar de asumir que la implementación coincide con lo solicitado.
python
from csv import DictReader
from decimal import Decimal, InvalidOperation
from pathlib import Path
INPUT_FILE = Path("orders.csv")
OUTPUT_DIR = Path("outputs")
OUTPUT_FILE = OUTPUT_DIR / "order_summary.txt"
REQUIRED_COLUMNS = {"order_id", "quantity", "unit_price"}
def main():
if not INPUT_FILE.is_file():
raise SystemExit(f"Input file not found: {INPUT_FILE}")
if OUTPUT_FILE.exists():
raise SystemExit(f"Output already exists: {OUTPUT_FILE}")
total_quantity = 0
total_revenue = Decimal("0")
with INPUT_FILE.open("r", encoding="utf-8", newline="") as file:
reader = DictReader(file)
if reader.fieldnames is None:
raise SystemExit("Input file has no header row.")
missing_columns = REQUIRED_COLUMNS - set(reader.fieldnames)
if missing_columns:
names = ", ".join(sorted(missing_columns))
raise SystemExit(f"Missing required columns: {names}")
for line_number, row in enumerate(reader, start=2):
order_id = row["order_id"].strip()
quantity_text = row["quantity"].strip()
price_text = row["unit_price"].strip()
if not order_id or not quantity_text or not price_text:
raise SystemExit(f"Missing value on line {line_number}.")
try:
quantity = int(quantity_text)
unit_price = Decimal(price_text)
except (ValueError, InvalidOperation):
raise SystemExit(f"Invalid numeric value on line {line_number}.")
if quantity < 0 or unit_price < 0:
raise SystemExit(f"Negative value on line {line_number}.")
total_quantity += quantity
total_revenue += quantity * unit_price
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
result = (
f"total_quantity={total_quantity}\n"
f"total_revenue={total_revenue:.2f}\n"
)
OUTPUT_FILE.write_text(result, encoding="utf-8")
print(f"Wrote: {OUTPUT_FILE}")
if __name__ == "__main__":
main()
05Revisa entradas, casos límite, errores y dependencias
Comprobación
Pregunta que debes hacer
Qué hace este ejemplo
Entradas
¿Están claros los nombres de archivo, columnas, codificación y tipos de datos?
Exige orders.csv y tres columnas concretas; abre el CSV como UTF-8.
Casos límite
¿Qué ocurre con cabeceras ausentes, campos vacíos, ceros o valores negativos?
Rechaza campos obligatorios ausentes y valores negativos; acepta cero.
Errores
¿Una entrada no válida detiene claramente el proceso o permite continuar con un resultado incorrecto?
Se detiene con un mensaje que incluye la línea cuando falta un valor o hay un número no válido.
Dependencias
¿El script necesita paquetes o versiones que no se hayan indicado?
Usa únicamente módulos de la biblioteca estándar de Python 3.12.
Seguridad de salida
¿Puede sobrescribir un resultado existente?
Se detiene si outputs/order_summary.txt ya existe.
Pruebas
¿Puedes predecir el resultado para un ejemplo pequeño?
El ejemplo sintético debe producir 6 unidades y 44.50 de ingresos.
También hay que revisar supuestos que no resultan evidentes solo por la sintaxis. Por ejemplo, este script permite quantity 0 y unit_price 0 porque no son valores negativos. Que esos ceros sean válidos es una regla del negocio, no una cuestión de Python. La persona que revisa debe decidir si esa regla coincide con el conjunto de datos real.
06Diseña pruebas antes de usar archivos reales
No pruebes solo el caso normal. Un conjunto corto de entradas deliberadamente diferentes permite conocer mucho mejor el comportamiento real del script.
Caso normal: las tres filas sintéticas deben producir total_quantity=6 y total_revenue=44.50.
Columna ausente: cambia unit_price por price y confirma que el script se detiene antes de calcular.
Valor vacío: deja una quantity vacía y confirma que informa de la línea correspondiente.
Número no válido: usa five en lugar de 5 y confirma que se rechaza.
Valor negativo: usa -1 en quantity o unit_price y confirma que el script se detiene.
Valor cero: usa quantity 0 y decide si aceptarlo coincide con la regla prevista.
Salida existente: crea primero outputs/order_summary.txt y confirma que el script está diseñado para detenerse en lugar de sobrescribirlo.
Archivo sin datos y solo con cabecera: decide si los totales 0 y 0.00 son aceptables o si un conjunto vacío debe rechazarse.
07Qué no demuestra esta checklist
Esta checklist puede descubrir muchos errores de implementación habituales, pero no demuestra que el requisito de fondo sea correcto. El script no puede decidir si las devoluciones deben representarse con valores negativos, si quantity puede ser 0, si los precios incluyen impuestos o si se permiten order_id duplicados salvo que esas reglas se definan explícitamente.
En scripts más grandes o de mayor riesgo, amplía la revisión a seguridad, permisos, privacidad, concurrencia, precisión numérica, rendimiento, registros y pruebas automatizadas. También conviene revisar con más cuidado cualquier código que manipule rutas, ejecute comandos de shell, haga solicitudes de red, gestione credenciales o realice operaciones destructivas con archivos.
La secuencia práctica es sencilla: define el contrato de entrada, calcula de forma independiente un ejemplo pequeño, revisa cada ruta de error, identifica las dependencias, protege las salidas y prueba los casos límite. La IA puede ayudar a redactar la implementación, pero la persona que revisa sigue siendo responsable de decidir si el código coincide con la tarea real.
Registro de ejecución y verificación
2026-09-21 · hand-checked example · Python 3.12
La aritmética del ejemplo sintético se comprobó a mano: 2 × 10.00 = 20.00, 3 × 5.50 = 16.50 y 1 × 8.00 = 8.00.
La cantidad total esperada se comprobó a mano: 2 + 3 + 1 = 6.
Los ingresos totales esperados se comprobaron a mano: 20.00 + 16.50 + 8.00 = 44.50.
El código de ejemplo se revisó manualmente frente a los requisitos indicados de entrada, validación, dependencias y no sobrescritura.
El código usa únicamente módulos de la biblioteca estándar de Python: csv, decimal y pathlib.
Límites de la verificación
El código Python de este artículo no fue ejecutado por el autor; el comportamiento descrito se basa en una revisión manual del código.
El ejemplo no define reglas de negocio para order_id duplicados, cantidades 0, devoluciones, impuestos, conversión de divisas o archivos inusualmente grandes.
Superar estas comprobaciones no demuestra que un script sea seguro o correcto para otro conjunto de datos o entorno de producción.
Las explicaciones y los ejemplos son de elaboración propia. Puedes consultar los comportamientos y conceptos relacionados en las siguientes fuentes oficiales.
Convierte “automatiza esto” en una descripción de tarea ejecutable. Adjunta una muestra sintética sin datos sensibles y un resultado esperado comprobado manualmente para completar una solicitud de script que totalice registros de trabajo por equipo.
Comprueba una función de agregación con cuatro filas que puedes calcular manualmente y 12 unit tests. Verifica no solo valores normales, sino también entrada vacía, cero, decimales y entrada no válida.
Divide un resumen plausible en hechos, cálculos e interpretaciones. Recalcula proporciones y promedios a partir de datos mensuales sintéticos y reescribe las frases con fuentes faltantes o causas exageradas para convertirlas en afirmaciones comprobables.
Trata una expresión regular generada por IA como un borrador, no como una regla terminada. Crea una pequeña tabla de pruebas sintéticas, compara las coincidencias esperadas con las reales, corrige el patrón y guarda un informe de revisión antes de usarlo con datos reales.