PUNTAJE 0 / 10
📘 Módulo · Salida de Datos

Formatear con
f-strings

La forma moderna y elegante de mostrar datos en Python. Aprenderás a combinar texto, variables y expresiones en tus salidas con print().


01 · Concepto

¿Qué es una f-string?

Hasta ahora, para mostrar el valor de una variable junto con un texto teníamos que unirlos con el operador +, lo que obliga a convertir números con str() y resulta difícil de leer. Las f-strings resuelven eso de forma elegante.

Una f-string (formatted string literal) es una cadena precedida por la letra f o F antes de las comillas. Dentro de ella podés insertar variables y expresiones usando marcadores de posición {} — Python los reemplaza automáticamente al ejecutar el print().

Fueron introducidas en Python 3.6 y hoy son la forma recomendada de formatear cadenas.
# ── Método viejo: concatenación con + ───────────────── nombre = "Zelda" nivel = 7 print("Héroe: " + nombre + " | Nivel: " + str(nivel)) # Salida: Héroe: Zelda | Nivel: 7 ← funciona pero es engorroso # ── Método nuevo: f-string ──────────────────────────── print(f"Héroe: {nombre} | Nivel: {nivel}") # Salida: Héroe: Zelda | Nivel: 7 ← más claro y sin str()
Notá que con la f-string no necesitás convertir el número nivel con str() — Python lo hace solo. Solo hace falta la f antes de las comillas y los {} alrededor de la variable.
✦ Pregunta 1 2 pts

¿Cuál de estas opciones define correctamente una f-string?

Aprint("Hola {nombre}")
Bprint(f"Hola {nombre}")
Cprint("f Hola {nombre}")
Dprint(f "Hola " + nombre)

02 · Marcadores

Marcadores de posición {}

Los {} no solo aceptan variables: también podés poner operaciones matemáticas, llamadas a funciones y cualquier expresión válida de Python. El resultado se calcula primero y luego se inserta en la cadena.

# Variables heroe = "Link" vida = 80 maxima = 100 # Operación aritmética dentro de {} print(f"Vida restante: {vida}/{maxima}") # → Vida restante: 80/100 # Expresión con operador print(f"Porcentaje de vida: {vida * 100 / maxima}%") # → Porcentaje de vida: 80.0% # Llamada a función len() directamente ciudad = "Montevideo" print(f"'{ciudad}' tiene {len(ciudad)} letras.") # → 'Montevideo' tiene 10 letras. # Método de string dentro de {} print(f"En mayúsculas: {heroe.upper()}") # → En mayúsculas: LINK
Regla de oro: todo lo que ponés dentro de {} es ejecutado como código Python. Cualquier expresión válida funciona, desde sumas hasta llamadas a funciones.
✦ Pregunta 2 2 pts
💻 Probá en el Live Lab: print(f"Resultado: {3 * 4 + 2}")

¿Qué imprime print(f"Resultado: {3 * 4 + 2}")?

AResultado: {3 * 4 + 2} — muestra los {} tal cual
BResultado: 12 + 2 — multiplica pero no suma
CResultado: 14 — evalúa toda la expresión
DDa un error — no se pueden poner operaciones

03 · Modificadores

Controlando el formato con :

Dentro de los {} podés agregar un modificador de formato usando dos puntos : seguido de la especificación. Esto te da control preciso sobre cómo se muestra un número: decimales, separadores, alineación y más.

# ── Decimales fijos con :.Nf ────────────────────────── precio = 1999.5 print(f"Precio: ${precio:.2f}") # → Precio: $1999.50 print(f"Precio: ${precio:.0f}") # → Precio: $2000 (sin decimales) # ── Separador de miles con :,f ─────────────────────── poblacion = 1350000 print(f"Población: {poblacion:,}") # → Población: 1,350,000 # ── Porcentaje con :.N% ─────────────────────────────── aprobados = 0.87 print(f"Aprobación: {aprobados:.1%}") # → Aprobación: 87.0% # ── Alineación y ancho mínimo ───────────────────────── print(f"{'Héroe':<10} {'Nivel':>5}") # → Héroe Nivel print(f"{'Link':<10} {'5':>5}") # → Link 5
Modificador¿Qué hace?EjemploResultado
:.2f2 decimales fijosf"{3.1:.2f}"3.10
:.0fSin decimales (redondea)f"{3.7:.0f}"4
:,Separador de milesf"{1000:,}"1,000
:.1%Porcentaje con 1 decimalf"{0.75:.1%}"75.0%
:<NAlinea a la izquierda (ancho N)f"{'hola':<8}"hola
:>NAlinea a la derecha (ancho N)f"{'hola':>8}" hola
✦ Pregunta 3 2 pts
💻 Probá en el Live Lab: print(f"{1234567:,}")

¿Qué modifcador usarías para mostrar el número 9.8 siempre con dos decimales, como 9.80?

A:.0f
B:2
C:.2f
D:,

04 · Comparativa

F-string vs otros métodos

Python tiene tres formas de combinar texto y variables. Conocerlas te ayuda a entender código ajeno y a elegir siempre la mejor opción.

nombre = "Pilar" nota = 8.5 # ── 1. Concatenación con + ──────────────────────────── print("Hola, " + nombre + ". Tu nota: " + str(nota)) # Requiere str(), difícil de leer con muchas variables # ── 2. .format() — Python 3.0+ ─────────────────────── print("Hola, {}. Tu nota: {}".format(nombre, nota)) # Mejor, pero hay que hacer coincidir {} con los argumentos # ── 3. f-string — Python 3.6+ ████ RECOMENDADA ███──── print(f"Hola, {nombre}. Tu nota: {nota:.1f}") # Clara, concisa y con soporte de modificadores inline
MétodoLegibilidadFormatoRecomendada
Concatenación +BajaManual con str()No
.format()MediaSí, pero verbosoSolo si < Python 3.6
f-stringAlta ✓Inline y directo ✓Sí ✓
✦ Pregunta 4 2 pts

¿Cuál de estas afirmaciones sobre las f-strings es correcta?

ALas f-strings son más lentas que la concatenación con +
BCon f-strings es obligatorio usar str() para incluir números
CLas f-strings permiten incluir expresiones Python directamente dentro de {}
DLas f-strings solo funcionan con variables de tipo str

05 · En la práctica

Casos de uso reales

Las f-strings brillan especialmente cuando necesitás generar mensajes dinámicos. Acá algunos patrones frecuentes que vas a encontrar en programas reales.

# ── Informe de notas ───────────────────────────────── alumno = "Valentina" nota = 8.333 aprueba = nota >= 6 print(f"Alumna: {alumno}") print(f"Nota final: {nota:.1f}") print(f"¿Aprobó?: {aprueba}") # ── Tabla de precios ───────────────────────────────── producto = "Teclado" precio = 849.9 descuento = 0.15 final = precio * (1 - descuento) print(f"Producto : {producto}") print(f"Precio : ${precio:.2f}") print(f"Descuento: {descuento:.0%}") print(f"Final : ${final:.2f}")
✦ Pregunta 5 2 pts
💻 Probá en el Live Lab: nota = 7.666; print(f"{nota:.1f}")

Tenés nota = 7.666. ¿Qué imprime print(f"Nota: {nota:.1f}")?

ANota: 7.666 — imprime todos los decimales
BNota: 7.7 — redondea a 1 decimal
CNota: 7.66 — trunca sin redondear
DDa un ValueError

⚡ Live Lab — F-Strings
🎮 Perfil del personaje
Usando las variables ya definidas, completá la f-string para que muestre:
Personaje: Zelda | Nivel: 5 | Vida: 80/100
🛒 Ticket de compra
Mostrá el resumen con precios formateados a 2 decimales y el descuento como porcentaje:
Producto: Auriculares
Precio original: $450.00
Descuento: 20%
Precio final: $360.00
🔓 Consola libre — Probá cualquier código Python con f-strings.
Cargando Python...