89 - Python: f-strings para formateo de cadenas de caracteres

Ver video

En las últimas versiones se ha agregado al lenguaje Python la posibilidad de definir string y dentro hacer la sustitución de variables.

Veamos con un ejemplo cual es la sintaxis para implementar los f-strings en Python.

Problema:

Ingresar por teclado dos enteros, calcular su suma y luego mostrar un mensaje de los dos valores ingresados y su suma.

Programa: ejercicio308.py

valor1=int(input("Ingrese primer valor:"))
valor2=int(input("Ingrese segundo valor:"))
suma=valor1+valor2
print(f"La suma de {valor1} y {valor2} es {suma}")

Para indicar que un string en Python contendrá variables a ser sustituidas debemos anteceder el caracter "f":

print(f"La suma de {valor1} y {valor2} es {suma}")

Las variables a ser sustituidas por su valor deben estar encerradas entre llaves.

El resultado de la ejecución es:

f-strings Python

No olvidar el caracter "f" previo a la declaración del string sino el resulta será:

La suma de {valor1} y {valor2} es {suma}

Problema:

Definir una lista con 5 valores enteros. Mostrar los 5 valores formateados a derecha junto a su suma.

Programa: ejercicio309.py

lista=[2000, 500, 17000, 24, 7]
for elemento in lista:
    print(f"{elemento:10}")
print("----------")    
print(f"{sum(lista):10}")

El resultado de la ejecución es:

f-strings Python

Cuando disponemos entre llaves la variable a sustituir podemos agregar luego dos puntos y la cantidad de espacios que ocupará la variable:

    print(f"{elemento:10}")

También otra posibilidad es indicar entre llaves la llamada a una función (la función sum retorna la suma de toda la lista):

print(f"{sum(lista):10}")

Problema:

Definir una lista con 5 valores flotantes con distintas cantidades de decimales. Mostrar los números solo con dos decimales.

Programa: ejercicio310.py

lista=[30.195, 400.2, 20.5555, 18.34, 67.0]
for elemento in lista:
    print(f"{elemento:10.2f}")

El resultado de la ejecución es:

f-strings Python

Acotaciones

  • Si queremos insertar los caracteres de apertura o cerrado de llaves en un f-strings debemos duplicarlos para que lo interprete Python:

    valor1=10
    print(f"{{valor1}} tiene el valor {valor1}")
    

    Luego el string que se imprime en pantalla es:

    {valor1} tiene el valor 10
    
  • Podemos utilizar tanto el caracter "f" minúscula como el caracter "F" mayúscula para indicar que se trata de un f-strings.

    valor1=10
    print(F"{{valor1}} tiene el valor {valor1}")
    
  • Se puede utilizar los f-strings para cadenas de múltiples líneas:

    valor1=1000
    valor2=340
    suma=valor1+valor2
    cadena=f"""
    {valor1:5}
    {valor2:5}
    -----
    {suma:5}
    """
    print(cadena)
    

    El resultado de la ejecución es:

     1000
      340
    -----
     1340
    
  • Anteriormente sin la sintaxis de los f-strings debíamos convertir todos los datos a string y concatenarlos:

    valor1=int(input("Ingrese primer valor:"))
    valor2=int(input("Ingrese segundo valor:"))
    suma=valor1+valor2
    print("La suma de "+str(valor1)+" y "+str(valor2)+" es "+str(suma))
    

    También podíamos utilizar el método format:

    valor1=int(input("Ingrese primer valor:"))
    valor2=int(input("Ingrese segundo valor:"))
    suma=valor1+valor2
    print("La suma de {} y {} es {}".format(valor1, valor2, suma))
    

    Con la llegada de los f-strings el código fuente de nuestro programa es mucho más legible.