Salida y entrada
Dos herramientas que usarás desde la primera línea que escribas: print() muestra valores en la terminal, input() obtiene texto del usuario. Son simples, pero conocer su comportamiento te evita varias sorpresas al principio.
Cómo Python ejecuta tu código
Python ejecuta tu código de arriba hacia abajo, una línea a la vez, exactamente en el orden en que la escribiste. Sin saltos. El orden en que escribes las cosas es el orden en que se ejecutan. Siempre.
ciudad = "Ciudad de México"
print(ciudad)
print("Población: 9 millones")ciudad se asigna primero. El primer print se ejecuta. El segundo print se ejecuta. Cada vez, en ese orden.
Esto importa porque no puedes usar una variable antes de haberla asignado. Python aún no la ha visto y lanzará un error:
print(pais) # NameError: pais aún no está definido
pais = "México"Ten esto en cuenta a medida que tus programas crezcan: cualquier cosa que uses debe estar definida antes de usarla.
Imprimiendo salida
print() es la forma en que Python te responde. Pásale cualquier valor y muestra ese valor. Convierte automáticamente a texto lo que le des.
print("Hola") # Hola
print(42) # 42
print(3.14) # 3.14
print(True) # TrueMúltiples valores
Puedes imprimir varios valores a la vez separándolos con comas. Python pone un espacio entre ellos por defecto. Cambia el separador con sep:
nombre = "Sofía"
edad = 28
print(nombre, edad) # Sofía 28
print("Nombre:", nombre) # Nombre: Sofía
print("2024", "01", "15", sep="-") # 2024-01-15
print("a", "b", "c", sep=", ") # a, b, cControlando el final de línea
Cada llamada a print() termina con un salto de línea por defecto, así que la siguiente salida comienza en una línea nueva. Cambia eso con end. Establecer end="" hace que el siguiente print continúe en la misma línea:
print("Cargando", end="")
print("...")
# Cargando...
print("uno", end=" | ")
print("dos", end=" | ")
print("tres")
# uno | dos | tresFormateando salida con f-strings
La forma más limpia de construir mensajes son las f-strings. Pon f antes de la comilla de apertura, luego envuelve cualquier variable o expresión entre llaves. Python la completa en tiempo de ejecución. Puedes poner cualquier valor, cálculo o llamada a método dentro de {}.
nombre = "Sofía"
puntos = 980
# concatenación: torpe, requiere str() para números
print("Jugador: " + nombre + ", Puntos: " + str(puntos))
# f-string: legible, sin conversión manual
print(f"Jugador: {nombre}, Puntos: {puntos}")Puedes poner cualquier expresión dentro de {}: aritmética, llamadas a métodos, especificaciones de formato:
precio = 49.99
impuesto = 0.2
total = precio * (1 + impuesto)
print(f"Total: {total:.2f}") # Total: 59.99
print(f"Nombre: {nombre.upper()}") # Nombre: SOFÍA
print(f"2 + 2 = {2 + 2}") # 2 + 2 = 4La especificación de formato después de : controla cómo se muestra el valor:
ratio = 0.8765
conteo = 1234567
etiqueta = "ingresos"
print(f"{ratio:.1%}") # 87.7%
print(f"{conteo:,}") # 1,234,567
print(f"{etiqueta:>12}") # " ingresos":.2f significa "dos decimales". Lo usarás constantemente para precios y medidas. Todo lo demás está ahí cuando lo necesites. Lo principal: cualquier cosa puede ir dentro de {}, no solo nombres de variables.
Obteniendo entrada del usuario
input() pausa tu programa y espera a que el usuario escriba algo. Lo que escriba (y presione Enter) regresa como valor de retorno. La cadena entre paréntesis es el mensaje que ve el usuario.
nombre = input("¿Cuál es tu nombre? ")
print(f"¡Hola, {nombre}!")input() siempre devuelve una cadena, sin importar lo que el usuario escriba. Escribe 42 y obtienes "42", no el número 42. Para hacer aritmética con ello, convierte explícitamente:
edad = int(input("¿Cuántos años tienes? "))
print(f"En diez años tendrás {edad + 10}.")¿Qué pasa si el usuario escribe algo que no se puede convertir? Python lanza un ValueError. Manejar eso correctamente se cubre en el capítulo Archivos y excepciones.
En la práctica
Un quiz que se personaliza a partir de la entrada del usuario:
nombre = input("¿Cuál es tu nombre? ")
materia = input("¿Qué materia? ")
print(f"Bien, {nombre}. Iniciando tu quiz de {materia}.")
print("¡Buena suerte!")Ambas entradas regresan como cadenas y van directamente a las f-strings. No se necesita conversión porque las estás usando como texto, no como números.

