Capítulo 3: Sintaxis y tu primer programa

Fig. 3.1: El código como entrada, la pantalla como salida.
En el Almacén Digital no puedes gritar órdenes al aire. Existe un Protocolo Estándar, y sin él el Gerente no mueve ni una caja. En programación llamamos Sintaxis a ese conjunto de reglas gramaticales que Python exige antes de ejecutar cualquier instrucción.
Incumple la sintaxis y la operación se detiene de golpe.
Tu primer envío: “Hola mundo”
Todo programador empieza aquí. Es la “prueba de sistema” real: confirma que la cadena de herramientas funciona de extremo a extremo antes de complicar las cosas.
- Abre la terminal, entra con
cda la carpeta de proyecto que creaste en el Capítulo 2 y activa el entorno. Cuando veas(.venv)al principio de la línea, estás dentro. - Abre esa misma carpeta en VS Code y crea ahí un archivo nuevo llamado
hola.py. Que esté en esa carpeta y no en otra importa: la terminal busca el archivo donde está parada. - Escribe exactamente esto:
print("¡Hola, mundo!")
- Guárdalo y, en la terminal donde aparece el
(.venv), escribepython hola.py. El botón de “Play” de VS Code hace lo mismo, siempre que hayas elegido el intérprete del entorno como en el Ejercicio 2.5.
Dos cosas pueden salir mal en este punto, y las dos se arreglan rápido:
can't open fileoNo such file or directory: la terminal está parada en otra carpeta. Fíjate en la ruta que muestra la línea y usacdpara llegar a la que contienehola.py.command not found: python: el entorno no está activo, o en tu sistema la orden espython3. Actívalo otra vez y repite.
Si ves ¡Hola, mundo! en la pantalla, el almacén está operativo. La función print() es tu orden directa al Gerente: “Publica este mensaje en el tablero de avisos”.
El modo interactivo (REPL)
Hay una segunda forma de hablar con el Gerente: cara a cara, sin formularios. Si escribes python en tu terminal (sin nombre de archivo), entras al REPL (Read-Eval-Print Loop), un mostrador donde cada orden se ejecuta al instante.
Verás el prompt >>>. Eso significa “te escucho”:
>>> print("Hola REPL")
Hola REPL
>>> 2 + 2
4
>>> exit()
Es ideal para probar una idea antes de escribirla en un archivo. ¿No estás seguro de cómo se comporta algo? Pregúntale al REPL. Para salir, escribe exit() y vuelves a tu terminal normal.
Los archivos .py son para programas reales; el REPL es para experimentos rápidos. Usarás los dos.
El protocolo (reglas básicas de sintaxis)
Un script de Python se parece mucho a una lista de inventario ordenada. Analicemos este ejemplo:
# Ficha de Empleado
nombre = "Carlos"
edad = 30
puesto = "Operador de Montacargas"
if edad > 18:
print("Acceso permitido")
1. Variables (etiquetas)
nombre, edad, puesto son etiquetas que pegamos en cajas para guardar información.
- Nota que usamos el signo
=para asignar valor. No es una igualdad matemática, es una asignación (“Mete ‘Carlos’ en la caja ‘nombre’”).
2. Comentarios (notas adhesivas)
Todo lo que empiece con # es ignorado por Python.
# Esto es una nota para humanos, la computadora no la lee.
Úsalos para explicar por qué hiciste algo, no qué hiciste.
3. Indentación (jerarquía)
Aquí es donde la mayoría se tropieza. Python no usa llaves {} como otros lenguajes: usa espacios al inicio de la línea para determinar qué instrucciones pertenecen a qué bloque. Un solo espacio de diferencia puede romper tu programa.
Mala jerarquía:
edad = 30
if edad > 18:
print("Acceso") # ¡ERROR! Esta línea debería ir más a la derecha.
Python no llega a ejecutar ni la primera línea. Lee el archivo completo antes de arrancar, encuentra la sangría torcida y se planta ahí con un IndentationError:
File "almacen.py", line 3
print("Acceso") # ¡ERROR! Esta línea debería ir más a la derecha.
^^^^^
IndentationError: expected an indented block after 'if' statement on line 2
(“Se esperaba un bloque indentado después del if de la línea 2”: abriste una sección nueva del almacén y la dejaste vacía.)
Buena jerarquía:
edad = 30
if edad > 18:
print("Acceso") # Correcto. Esta orden depende del 'if'.
Piénsalo como estantes: los estantes interiores deben verse dentro de la sección principal.
¡Ojo!: Usa 4 espacios por nivel de indentación. Si mezclas espacios con tabulaciones, Python se niega con un
TabError, la variante deIndentationErrorreservada justo para esa mezcla. Configura tu editor para que la tecla Tab inserte espacios y el problema desaparece.
Fíjate también en los dos puntos (:) al final del if. Ese símbolo es el que anuncia “aquí empieza un bloque indentado”. Lo verás en if, for, def y en todo lo que abra una sección nueva del almacén. Si lo olvidas, SyntaxError garantizado.
4. Mayúsculas y minúsculas (case sensitivity)
Python distingue entre mayúsculas y minúsculas. nombre, Nombre y NOMBRE son tres variables distintas que no tienen nada que ver entre sí.
nombre = "Juan"
Nombre = "María"
NOMBRE = "Pedro"
# Son tres variables diferentes
print(nombre) # Imprime: Juan
Las palabras reservadas (if, else, for, def) van en minúsculas, con tres excepciones que ya verás pronto: True, False y None. Escribir If en lugar de if produce un error inmediato. Y aunque print no es palabra reservada (es una función integrada), se le aplica la misma regla: PRINT("hola") falla porque ese nombre no existe. El error que verás es NameError.
Cuando el Gerente rechaza tu orden (errores de sintaxis)
Un formulario mal llenado regresa con sello rojo de “RECHAZADO”. En Python ese sello se llama SyntaxError.
Ejemplo de error (falta cerrar paréntesis):
print("Hola mundo"
Salida:
SyntaxError: '(' was never closed
Nota: Los mensajes de error de Python llegan siempre en inglés, sin importar el idioma de tu computadora. Este dice “el paréntesis
(nunca se cerró”. No hay versión en español y en el trabajo profesional tampoco la habrá, así que en este libro te traduciremos los mensajes importantes mientras el ojo se acostumbra.
Buena parte del tiempo de un programador se va en corregir estos detalles minúsculos. Lee el mensaje de error con atención: te dice la línea exacta y el motivo concreto. Es un mapa, no un insulto.