Mi primer programa

"El que no se equivoca, no programa."

Qué vas a aprender en este capítulo

Vas a pasar de leer sobre programación a programar de verdad. Al terminar este capítulo, vas a tener Python instalado, vas a haber ejecutado tu primer programa, y vas a entender qué pasa por dentro cuando le das Enter.

2.1 Instalar Python

💡 Intuición

Python no viene preinstalado en la mayoría de las computadoras. Es un programa que interpreta otros programas — toma el archivo de texto que vos escribiste y lo ejecuta. Sin él, tu archivo .py es solo texto, igual que un .txt.

Pensá en Python como el "intérprete" que lee tu receta y la ejecuta. Sin intérprete, la receta es solo papel.

En Windows

  1. Andá a https://www.python.org/downloads/
  2. Descargá la última versión (ej: 3.12.x).
  3. Al instalar, muy importante: marcá la casilla "Add Python to PATH" antes de hacer click en Install Now. Esto te ahorra dolores de cabeza después.
  4. Para verificar, abrí la Terminal (buscá "PowerShell" o "cmd" en el menú de inicio) y escribí:
python --version

Deberías ver algo como Python 3.12.1. Si ves un error, tenés que reinstalar marcando la casilla del PATH.

En Mac

Mac trae Python 2 pre-instalado, que no nos sirve (es una versión vieja). Necesitamos Python 3.

Opción fácil: descargar de https://www.python.org/downloads/macos/ e instalar.

Opción mejor (con Homebrew):

brew install python3

Verificá:

python3 --version

En Linux

Casi todas las distribuciones traen Python 3. Verificá:

python3 --version

Si no está:

sudo apt install python3 python3-pip   # Debian/Ubuntu
sudo dnf install python3 python3-pip   # Fedora

En Android (sin computadora)

Si solo tenés celular, descargá la app Pydroid 3 desde Play Store. Trae Python 3 listo para usar. Para los primeros capítulos del libro, te alcanza perfecto.

⚠️ Trampa común

python vs python3. En Mac y Linux, escribir python a secas a veces ejecuta Python 2 (la versión vieja). Siempre usá python3 para asegurarte de estar en Python 3. En Windows, python ya es Python 3 si lo instalaste recién.

Tip: si nunca te acordás cuál usar, escribí python3 --version primero. Si funciona, usá python3. Si no, probá python.

2.2 Hola, mundo

Por tradición, el primer programa que escribe todo programador es uno que muestra el mensaje Hola, mundo. Vamos a hacerlo.

Crear el archivo

Abrí cualquier editor de texto (Bloc de notas en Windows, TextEdit en Mac, gedit en Linux). Mejor todavía: descargá Visual Studio Code desde https://code.visualstudio.com/ — es gratis, y es el editor que vas a usar el resto de tu carrera.

Creá un archivo nuevo con este contenido exacto:

print("Hola, mundo")

Guardalo como hola.py. Importante: el .py al final indica que es un archivo de Python. Si lo guardás como hola.txt, no va a funcionar.

Ejecutar el archivo

Abrí la Terminal, navegá hasta donde guardaste el archivo, y ejecutalo:

cd Documentos/programacion-uno     # ajustá la ruta a donde lo guardaste
python3 hola.py                    # en Mac/Linux
python hola.py                     # en Windows

Deberías ver:

Hola, mundo

🎉 Acabás de ejecutar tu primer programa.

📐 Fundamento

¿Qué pasó cuando le diste Enter? Mucho más de lo que parece:

  1. El sistema operativo (Windows, Mac, Linux) recibió la orden de ejecutar el comando python3 hola.py.
  2. Buscó el ejecutable llamado python3 en una lista de carpetas (la variable PATH que mencionamos en la instalación).
  3. Lanzó el intérprete de Python como un nuevo proceso.
  4. El intérprete abrió y leyó el archivo hola.py carácter por carácter.
  5. Lo pasó por el lexer (también llamado tokenizer), que agrupó los caracteres en unidades con significado: print, (, "Hola, mundo", ).
  6. El parser verificó que la secuencia de tokens forme una estructura válida en el lenguaje (en este caso, una llamada a función con un argumento de tipo cadena).
  7. Construyó un árbol de sintaxis abstracta (AST) representando el programa.
  8. Compiló el AST a bytecode — un formato intermedio más compacto y rápido de ejecutar.
  9. La máquina virtual de Python (PVM) ejecutó el bytecode instrucción por instrucción.
  10. La instrucción correspondiente a print invocó una función del sistema operativo para escribir bytes en la salida estándar (stdout), que está conectada a tu terminal.
  11. Tu terminal recibió esos bytes y los pintó como pixeles en la pantalla, formando las letras "Hola, mundo".

Toda esa cadena ocurrió en milésimas de segundo. Cuando estés depurando, vas a agradecer entender estas capas — la mayoría de errores de principiante pasan en alguna de estas etapas.

Línea aparte sobre interpretado vs compilado. Python es un lenguaje interpretado — el intérprete lee y ejecuta tu código directo. Lenguajes como C o Rust son compilados — un programa aparte traduce todo tu código a instrucciones de máquina antes de ejecutar, generando un archivo .exe independiente. La diferencia tiene consecuencias prácticas:

  • Interpretado: más lento en ejecución pero más rápido para iterar (cambiás → corrés → ves resultado).
  • Compilado: más rápido en ejecución, pero hay que recompilar cada vez que cambiás algo.

Python en realidad es un híbrido: compila a bytecode (paso 8 de arriba) y luego interpreta el bytecode. Pero desde tu punto de vista como programador, es interpretado.

2.3 La función print

print es una función. Le pasás cosas entre paréntesis y las muestra en la pantalla.

print("Hola, mundo")
print("Bienvenido a Programacion I")
print("UNIMO, San Miguel")

Si guardás esto como bienvenida.py y lo corrés, ves:

Hola, mundo
Bienvenido a Programacion I
UNIMO, San Miguel

Cada print imprime en una línea nueva.

Imprimir varios valores

Podés pasar varios argumentos separados por coma. Python los une con un espacio:

print("Mi nombre es", "Juan", "y tengo", 19, "años")

Salida:

Mi nombre es Juan y tengo 19 años

Notá que 19 no lleva comillas — es un número, no texto. Python sabe imprimir tanto texto como números (vamos a profundizar en esto en el próximo capítulo).

Imprimir sin salto de línea

Si querés que dos print salgan en la misma línea, usá el parámetro end:

print("Hola, ", end="")
print("mundo")

Salida:

Hola, mundo

Por defecto, end vale "\n" (salto de línea). Lo cambiamos a cadena vacía y los dos print quedan pegados.

📝 Ejemplo — Tu tarjeta de presentación

print("=" * 30)
print("  Tarjeta de Presentacion")
print("=" * 30)
print("Nombre:    Maria Lopez")
print("Carrera:   Ing. en Sistemas")
print("Ciclo:     1")
print("Email:     maria@unimo.edu.sv")
print("=" * 30)

Salida:

==============================
  Tarjeta de Presentacion
==============================
Nombre:    Maria Lopez
Carrera:   Ing. en Sistemas
Ciclo:     1
Email:     maria@unimo.edu.sv
==============================

Detalle: "=" * 30 es Python multiplicando una cadena. Genera el carácter = repetido 30 veces. Útil para formatear sin escribir cada signo a mano.

2.4 Comentarios

Los comentarios son notas en el código que el intérprete ignora. Sirven para explicar por qué estás haciendo algo (no qué — eso ya lo dice el código).

En Python, todo lo que esté después de # en una línea es comentario:

# Este programa muestra el menu de la pupuseria
print("Pupuseria La Esquina")
print("--- Menu ---")

# Precios actualizados al 2026-01
print("Pupusa de queso ........ $0.50")
print("Pupusa revuelta ........ $0.60")  # la mas pedida

⚠️ Trampa común

Comentar lo obvio. Esto NO es útil:

x = 5    # asignar 5 a x
print(x) # imprimir x

Eso ya lo veo del código. Un buen comentario explica algo que no está claro:

# La pupusa de queso solo cuesta $0.50 en mayoreo (>50 unidades)
precio_queso = 0.50

Regla práctica: si tu nombre de variable y tu código son claros, no necesitás comentario. Los buenos programadores escriben pocos comentarios pero los que escriben son valiosos.

2.5 Errores: tu nuevo mejor amigo

Vas a ver muchos, muchos errores. Es normal. Vamos a ver los más comunes para que cuando aparezcan los reconozcás y los arregles rápido.

Olvidar las comillas

print(Hola, mundo)

Error:

NameError: name 'Hola' is not defined

Sin comillas, Python piensa que Hola es una variable (algo que vos definiste antes). Como no la definiste, se queja. La cura: comillas dobles "Hola, mundo" o simples 'Hola, mundo'. Las dos funcionan igual.

Olvidar un paréntesis

print("Hola"

Error:

SyntaxError: '(' was never closed

Cada ( que abrís tiene que tener su ) que cierre. Igual con [ y {. Los editores como VS Code te lo marcan en rojo.

Mal escrito el nombre de la función

prin("Hola")
Print("Hola")

Errores:

NameError: name 'prin' is not defined
NameError: name 'Print' is not defined. Did you mean: 'print'?

Python distingue mayúsculas y minúsculas. printPrintPRINT. La cura: escribilo siempre en minúsculas.

Indentación inesperada

print("Hola")
   print("mundo")

Error:

IndentationError: unexpected indent

Python usa espacios al inicio de la línea para entender la estructura del programa. Por ahora, asegurate de que tus líneas empiezan al margen izquierdo, sin espacios delante. Vamos a ver indentación con propósito en el capítulo de condicionales.

📐 Fundamento

Anatomía de un mensaje de error en Python. Cuando algo falla, Python te muestra un traceback:

Traceback (most recent call last):
  File "/Users/maria/hola.py", line 3, in <module>
    print(Hola)
          ^^^^
NameError: name 'Hola' is not defined

Leelo de abajo hacia arriba:

  1. Última línea — el error. NameError: name 'Hola' is not defined. Esto te dice qué salió mal.
  2. Líneas anteriores — la pista. Te dicen dónde ocurrió: archivo hola.py, línea 3, en el código print(Hola). Las flechitas ^^^^ apuntan al lugar exacto.
  3. Primera línea — el contexto. "Most recent call last" significa que si hay varios niveles de error (porque una función llamó a otra), el más profundo está hasta abajo.

Hábito que deberías formar desde hoy: cuando veas un error, leélo entero. Estudiantes principiantes ven el rojo y entran en pánico sin leer. Programadores experimentados leen, entienden, y arreglan. La diferencia entre ambos no es talento — es paciencia para leer.

2.6 Proyecto: el menú de la pupusería en Python

🏗️ Avance del proyecto — Pupusería La Esquina

En el capítulo anterior escribimos el pseudocódigo del programa que muestra el menú. Ahora lo traducimos a Python.

Creá el archivo pupuseria.py:

# Pupuseria La Esquina - Sistema de pedidos
# Capitulo 2: mostrar el menu

print("=" * 35)
print("  Pupuseria La Esquina")
print("  San Miguel, El Salvador")
print("=" * 35)
print()
print("Menu:")
print("  1. Pupusa de queso ........ $0.50")
print("  2. Pupusa revuelta ........ $0.60")
print("  3. Pupusa de chicharron ... $0.60")
print("  4. Curtido (extra) ........ $0.25")
print("  5. Refresco de tamarindo .. $1.00")
print()
print("=" * 35)

Ejecutá:

python3 pupuseria.py

Salida esperada:

===================================
  Pupuseria La Esquina
  San Miguel, El Salvador
===================================

Menu:
  1. Pupusa de queso ........ $0.50
  2. Pupusa revuelta ........ $0.60
  3. Pupusa de chicharron ... $0.60
  4. Curtido (extra) ........ $0.25
  5. Refresco de tamarindo .. $1.00

===================================

En el próximo capítulo aprendemos a guardar datos (los precios y nombres) en variables, en lugar de tenerlos pegados al código. Eso nos prepara para que el programa pueda calcular totales en capítulos siguientes.

2.7 Resumen visual

Concepto Una línea para recordar
Python Intérprete que lee tu archivo .py y lo ejecuta línea por línea.
print(...) Muestra en pantalla lo que esté entre paréntesis.
# comentario Nota para humanos; Python la ignora.
"texto" Cadena de caracteres (texto). Lleva comillas.
123 Número entero. Sin comillas.
python3 archivo.py Comando para ejecutar tu programa desde la terminal.
Mayúsculas Importan: printPrint.

2.8 Ejercicios

✏️ Ejercicio 2.1 — Tu tarjeta

Escribí un programa tarjeta.py que imprima tu propia tarjeta de presentación: nombre, carrera, ciclo, email, materia favorita. Usá líneas de = o - para enmarcar.

✏️ Ejercicio 2.2 — Caracteres especiales

Escribí un programa que imprima:

El profesor dijo: "El examen es el lunes"

Pista: ¿cómo metés comillas dobles dentro de una cadena que está entre comillas dobles?

✏️ Ejercicio 2.3 — Bandera de El Salvador

Escribí un programa que imprima en la terminal una representación ASCII de la bandera de El Salvador (azul-blanco-azul):

##############################
##############################
                              
                              
##############################
##############################

Usá print con multiplicación de cadenas ("#" * 30).

✏️ Ejercicio 2.4 — Lectura de errores

Cada uno de estos programas tiene un error. Sin ejecutarlo, decí qué error daría Python y cómo se arregla.

# A
print("Hola)

# B
Print("Hola")

# C
print(hola)

# D
print("Hola"
print("Mundo")

2.9 Para profundizar


Definiciones nuevas: intérprete, función, argumento, cadena (string), comentario, traceback, sintaxis.