Impresión y salida
muestra resultados con print(), formatea texto con f-strings y controla lo que aparece en pantalla.
- Usar print() para mostrar valores y mensajes
- Formatear la salida con f-strings y especificadores de formato
- Combinar varios valores en una sola llamada a print()
Una respuesta encerrada dentro de la máquina
Prueba a calcular
A mano escribirías los pasos y la respuesta en papel:
Obtener la respuesta es solo la mitad de resolver un problema, la otra mitad es comunicarla. Ahora dale esa misma expresión a un ordenador. Calcula en un parpadeo, e inmediatamente se olvida de decírtelo. El valor queda guardado en silencio dentro de la máquina y, a menos que le exijas que salga, nunca lo verás.
Esa operación invisible es el problema fundamental que resuelve esta lección. Un programa necesita una forma de escribir sus resultados donde un humano pueda leerlos, en Python, esa instrucción es print().
print(), revela un valor
print() toma un valor y lo envía a la pantalla. Cualquier valor sirve: Python lo convierte a texto primero.
print(13.4) # 13.4
print(42) # 42
print("hello") # helloNo tienes que imprimir un número terminado, print() acepta cualquier expresión y la evalúa primero:
print((17 * 3 + 4**2) / 5) # 13.4El patrón a recordar: calcula algo y luego entrégaselo a print(). Los valores no tienen salida de un programa por sí solos; imprimir es la puerta.
Un número, y su etiqueta
Un número suelto rara vez significa mucho. En papel no escribirías solo, escribirías “Puntaje: 13,4”. Dales a print() varios argumentos y pondrá un espacio entre ellos:
print("Score:", 87) # Score: 87El primer argumento es la etiqueta; el segundo, el valor. Puedes apilar tantos como quieras, y print() los mantiene separados por ti.
Mostrar exactamente las cifras que quieres
Aquí empiezan los problemas: el valor
lleva todas sus cifras consigo en todo momento. Pero una tabla necesita , una línea del tiempo necesita 23.8°C, no 23.7891°C. El número de cifras mostradas es una elección de cómo presentar el número, y no debe cambiar el valor guardado, o perderás la precisión para siempre.
Por eso el redondeo debe vivir en la impresión, no en la operación. Un f-string te permite decidir en el momento de imprimir: escribe f"...", mete la expresión dentro de {...} y añade un especificador de formato tras los dos puntos:
price = 19.999
print(f"Total: ${price:.2f}") # Total: $20.00 (se muestra redondeado)
print(price) # 19.999 (el valor intacto)
print(f"Double: {price * 2}") # 39.998 (cualquier expresión vale)Merece la pena desentrañar qué pasa en {price:.2f}:
{price}dice pon aquí el valor, el f-string hace la conversión a texto por ti.:.2fdice muéstralo como número de punto fijo con 2 cifras decimales, el redondeo ocurre solo en la forma mostrada.
Los especificadores hacen más que redondear: también alinean. Una columna de 7.5, 8.5, 87.5 se ve irregular; dale a cada entrada el mismo ancho y la columna se alinea:
print(f"{7.5:>6}") # " 7.5" alineado a la derecha con ancho 6
print(f"{87.5:>6}") # " 87.5"Un ejemplo resuelto: la columna de precios
Un recibo de tienda quiere las etiquetas a la izquierda y los números alineados por sus decimales. Dos direcciones de formato hacen ambas cosas:
print(f"{'item':<10}{'price':>7}")
print(f"{'coffee':<10}{3.5:>7.2f}")
print(f"{'croissant':<10}{2.95:>7.2f}")
# item price
# coffee 3.50
# croissant 2.95<10 alinea la etiqueta a la izquierda a lo ancho de diez columnas; >7.2f alinea el número a la derecha a lo largo de siete, guardando dos decimales. La alineación es solo formato en la otra dirección, el mismo {valor:especificación} que ya conoces, con la flecha diciendo hacia dónde se inclina el texto. Esta es la semilla de toda tabla que el curso construirá: etiquetas a un lado, números al otro.
Errores comunes
print()no devuelve nada.print("hi")muestra texto pero se evalúa comoNone, no puedes capturar lo que imprime en una variable. Imprimir es el final de una operación, nunca un paso dentro de ella.- Mezclar tipos con
+.print("Score: " + 87)lanza unTypeError, porque una cadena y un número no se pueden sumar. Los f-strings existen precisamente para emparejar una etiqueta con un valor:print(f"Score: {87}"). - Un
{literal en un f-string necesita{{.f"{{x}}"imprime{x}; un{suelto se lee como el comienzo de una expresión. Doblar es la vía de escape.
🧩 Desafíos
🧩 Desafío, piensa primero, luego revela
Calcula en papel y luego imprímela sin escribir tú la respuesta, deja que el ordenador calcule e imprima en un solo paso.
💡 Respuesta: print((2**5 + 9) / 5) → 8.2. Una expresión, entregada directamente a print(): la máquina la evalúa y escribe el resultado.
🧩 Desafío, piensa primero, luego revela
Dado temperature = 23.7891, imprime "Today: 23.8°C" (un decimal) sin tocar el valor guardado.
💡 Respuesta: print(f"Today: {temperature:.1f}°C") → Today: 23.8°C. El especificador :.1f redondea solo al mostrar; temperature sigue siendo 23.7891.
🤔 Preguntas socráticas
- ¿Por qué Python usa
print()como función (con paréntesis) en lugar de una instrucción? ¿Qué ventaja te da? print("A", "B", "C")imprimeA B Ccon espacios. ¿Cómo podrías imprimirlos sin espacios? ¿Con comas entre ellos?- Si
x = 3.14, ¿qué producef"{x}"? ¿Yf"{x:.0f}"? Explica la diferencia en términos del valor frente a su representación.
✅ Comprobación rápida
1. Tu fórmula se calcula, pero el programa no muestra nada. ¿Por qué?
2. ¿Cómo imprimes 3.14159 mostrando dos decimales, sin redondear el valor guardado?