Cuando programas tu ESP32, ESP8266 o Raspberry Pi Pico con MicroPython, tarde o temprano necesitas mostrar información mezclando texto fijo con valores que cambian: la lectura de un sensor, el nombre de un dispositivo, un timestamp o un porcentaje de batería. El problema es que el texto y los números son tipos de datos distintos, y MicroPython no te deja pegarlos directamente sin avisarte.

Si intentas algo tan simple como "Temperatura: " + 24.5, el intérprete te lanza un TypeError: can't convert float to str. Por eso existe el formateo de strings: un conjunto de herramientas para insertar valores dentro de un texto de forma limpia, controlando además cuántos decimales mostrar o cómo alinear la salida. En esta guía vas a conocer las tres formas que ofrece MicroPython, vas a ver el mismo ejemplo resuelto con cada una y, lo más importante, vas a saber cuál te conviene según el caso. Todo aplica igual en tu Pico, tu ESP32 o tu ESP8266.

Formateo de strings en MicroPython sobre Raspberry Pi Pico, ESP32 y ESP8266

Para qué sirve formatear strings en tus proyectos

En la práctica esto aparece todo el tiempo cuando trabajas con microcontroladores:

  • Mostrar mediciones en un display o por el monitor serial: "Humedad: 62.3 %" en lugar de un número suelto.
  • Registrar datos (logging): armar líneas como "2026-05-30 | sensor=DHT22 | temp=21.7" para guardar en una tarjeta microSD.
  • Preparar payloads: construir el texto que envías por MQTT, HTTP o por una pantalla OLED.

Las tres técnicas hacen lo mismo (reemplazar marcadores por valores), pero cambian en sintaxis, legibilidad y en cuánto control te dan sobre el formato. Vamos una por una.

Forma 1: el operador % (estilo clásico)

El operador % es la forma más antigua, heredada del lenguaje C. La idea es escribir un texto con marcadores de posición y, después del %, pasar entre paréntesis los valores que reemplazan a esos marcadores, en el mismo orden.

Python
name = "Sara"
age = 30
# Format a string with placeholders
height = 160.521
message = "Hello, my name is %s. I am %d years old and I'm %.1f cm tall." % (name, age, height)

# Print the formatted message
print(message)

Al ejecutar este código en tu placa, el monitor serial muestra la frase ya armada con los valores reemplazados:

Salida en Thonny del operador porcentaje corriendo en MicroPython sobre Raspberry Pi Pico

¿Qué significa cada marcador? Cada uno declara el tipo de dato que espera:

  • %s reemplaza por un string (texto).
  • %d reemplaza por un entero.
  • %.1f reemplaza por un número decimal (float), y el .1 indica cuántos decimales mostrar.

Ese número después del punto es clave para sensores: si tu lectura es 160.521 pero solo te interesan dos decimales, usas %.2f y obtienes 160.52. El redondeo lo hace MicroPython por ti. La contra de este método es que, cuando tienes muchos valores, el paréntesis final con la tupla se vuelve difícil de leer y es fácil descuadrar el orden.

Forma 2: el método format() (más flexible)

El método format() resuelve el problema de orden del operador %. En vez de marcadores con tipo, usas llaves {} dentro del texto y llamas a .format() con los valores. Lo potente es que las llaves pueden ir vacías, numeradas o con nombre, así que puedes reordenar o repetir valores sin reescribir la frase.

Python
# Different types of placeholders
message1 = "Hello, my name is {name}. I am {age} years old and I'm {height:.2f} cm tall.".format(name ="Sara",age=30, height=160.521 )

message2 = "Hello, my name is {0}. I am {1} years old and I'm {2:.2f} cm tall.".format("Sara",30, 160.521)

message3 = "Hello, my name is {}. I am {} years old and I'm {:.2f} cm tall.".format("Sara",30, 160.521)

# Print the formatted message
print(message1)
print(message2)
print(message3)

Las tres líneas producen exactamente la misma salida, pero muestran tres estilos:

  • message1 usa nombres ({name}, {age}): el más legible, porque cada hueco dice qué representa.
  • message2 usa índices ({0}, {1}): útil si necesitas repetir un mismo valor en varias partes del texto.
  • message3 usa llaves vacías ({}): el más corto, ideal cuando el orden de los valores es obvio.

El control de decimales se mantiene dentro de la llave con :.2f. Esta versión es más verbosa de escribir, pero gana mucho cuando el texto es largo o cuando la frase y los valores se arman en momentos distintos del programa.

Forma 3: las f-strings (la opción recomendada hoy)

Las f-strings (literales de string formateados) son la forma más moderna y, en la mayoría de los casos, la más cómoda. Se activan poniendo una f justo antes de las comillas. Dentro del texto escribes las variables o expresiones directamente entre llaves, y MicroPython las evalúa y reemplaza al vuelo.

Python
name = "Sara"
age = 30
height = 160.521

# Format a string with placeholders
message = f"Hello, my name is {name}. I am {age} years old and I'm {height:.1f} cm tall."

# Print the formatted message
print(message)

La gran ventaja es la legibilidad: la variable aparece dentro del texto, en el lugar exacto donde va su valor, sin paréntesis extra al final ni que contar posiciones. El control de decimales sigue la misma regla: {height:.1f} muestra un decimal. Y como evalúa expresiones, puedes incluso hacer cálculos o llamadas a funciones dentro de las llaves, por ejemplo f"Voltaje: {adc.read() * 3.3 / 4095:.2f} V".

Un detalle técnico para tener en cuenta: las f-strings requieren una versión razonablemente reciente del firmware de MicroPython. En builds muy antiguos podrían no estar disponibles; si te tira un SyntaxError con una f-string, actualiza el firmware de tu placa o usa format() como respaldo.

¿Cuál uso? Recomendación rápida

  • Para código nuevo, usa f-strings: son las más legibles y las más rápidas de escribir.
  • Si necesitas armar el texto en una parte y los valores en otra, o repetir un valor, format() te da esa flexibilidad.
  • El operador % lo vas a encontrar en código antiguo y en ejemplos de C; conviene reconocerlo, pero para proyectos nuevos no es la primera opción.

En los tres casos, recuerda el truco de los decimales (.1f, .2f): es lo que evita que tu display muestre "23.40000000001" en vez de "23.4".

Variantes y mejoras

Una vez que dominas el formateo, puedes llevarlo a casos más útiles en tus proyectos:

  • Logging a microSD: combina una f-string con un timestamp del módulo time para escribir líneas ordenadas en un archivo, por ejemplo f"{t},{temp:.1f},{hum:.1f}\n", y guárdalas en una tarjeta microSD vía SPI para registrar datos sin PC.
  • Alineación en pantallas de ancho fijo: en displays OLED o LCD de 16 columnas, puedes reservar ancho con {valor:>6.2f} (alinear a la derecha en 6 caracteres) para que los números no "bailen" cuando cambia la cantidad de dígitos.
  • Salida con colores en el monitor serial: anteponiendo códigos de escape ANSI dentro de la f-string puedes resaltar alertas (por ejemplo, una temperatura sobre un umbral) en rojo cuando lees por terminal.

Ninguna de estas ideas necesita hardware extra más allá de lo que ya usas: son puro software sobre la misma placa.

Personalización para Chile

Lo bueno de este tutorial es que no necesitas comprar nada nuevo: el formateo de strings es código puro y corre en cualquier placa con MicroPython que ya tengas. Si todavía no tienes una, o quieres la placa exacta con la que se hizo este ejemplo, en MechatronicStore las consigues con stock local:

Raspberry Pi Pico con conector USB disponible en MechatronicStore

  • Raspberry Pi Pico (wc_id 22739): $7.990 CLP. Es la placa que aparece en la captura de Thonny de este tutorial, ideal para partir con MicroPython.
  • ESP32 ESP WROOM 32 (wc_id 3688): $7.990 CLP. Suma WiFi y Bluetooth, perfecta cuando además quieres enviar esos strings formateados por la red.
  • NodeMCU ESP8266: la tercera placa del ejemplo. Por ahora puede estar sin stock, pero cualquiera de las dos anteriores corre el mismo código sin cambios.

Para escribir y ejecutar el código te recomendamos el editor Thonny (gratuito), que es justamente el que se ve en la captura de salida de más arriba. Las tres placas se programan igual en MicroPython, así que el código de esta guía funciona idéntico en cualquiera de ellas.

Recursos

Guía en español inspirada en el tutorial de Random Nerd Tutorials, reescrita con contexto propio y componentes en stock local en MechatronicStore.