Ejercicio 08 — Imprime una tabla alineada de productos y precios con formato numérico
Dificultad: rojo · Módulo 06 (Cadenas)
Enunciado
Imprime una tabla alineada de productos y precios con formato numérico
Cómo se resuelve
Imprimir una tabla alineada es el ejercicio “rojo” del módulo: junta alineación de texto con .ljust() y el mini-lenguaje de formato numérico de las f-strings.
for nombre, precio in productos:— recorremos la lista de tuplas y desempaquetamos cada par(producto, precio)en dos variables de golpe.nombre.ljust(12)— “left justify”: rellena el nombre con espacios por la DERECHA hasta un ancho fijo de 12 caracteres. Así todos los nombres empiezan en la misma columna y los precios quedan alineados a la vez.f"{precio:>10,.2f}"— dentro de la f-string, tras los dos puntos va el formato:>10alinea a la derecha en un ancho de 10;,mete el separador de miles (1299.00 se ve como “1,299.00”);.2ffuerza dos decimales fijos. Alinear los números a la derecha es lo que hace que las unidades, decenas y centenas cuadren en columna.- Cada
printcompone una fila: nombre relleno a la izquierda + precio formateado a la derecha.
Trampa habitual: en C alinearías con printf("%-12s%10.2f", ...). Python ofrece dos rutas equivalentes: el método .ljust(12) sobre la cadena, o hacerlo también dentro de la f-string con {nombre:<12}. Mezclar ambos estilos funciona, pero conviene saber que < y > en la f-string hacen lo mismo que ljust/rjust.
Para practicar — cópialo y complétalo
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
# Curso de Python — Modulo 06: Cadenas: transformar y formatear
# Ejercicio 08 — PRACTICA (rellena los TODO)
# Enunciado: Imprime una tabla alineada de productos y precios con formato numérico
# Dificultad: rojo
# Ejecutar: python3 ej08_practica.py
# Lista hardcodeada de pares (producto, precio)
productos = [
("Manzana", 1.50),
("Leche", 0.99),
("Portatil", 1299.00),
]
# TODO: recorre los pares (nombre, precio) y por cada uno imprime una linea
# nombre a la izquierda con ljust(12)
# precio a la derecha con f"{precio:>10,.2f}" (ancho 10, miles, 2 decimales)
for nombre, precio in productos:
print() # reemplaza por el f-string con nombre.ljust(12) y precio formateadoSolución — cópiala y ejecútala
# Curso de Python — Modulo 06: Cadenas: transformar y formatear
# Ejercicio 08 — MODELO (resuelto)
# Enunciado: Imprime una tabla alineada de productos y precios con formato numérico
# Dificultad: rojo
# Ejecutar: python3 ej08_modelo.py
# Lista hardcodeada de pares (producto, precio)
productos = [
("Manzana", 1.50),
("Leche", 0.99),
("Portatil", 1299.00),
]
# ljust(12): nombre a la izquierda en un ancho fijo de 12
# f"{precio:>10,.2f}": precio a la derecha en ancho 10,
# con separador de miles (,) y 2 decimales
for nombre, precio in productos:
print(f"{nombre.ljust(12)}{precio:>10,.2f}")Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.