24. Formateo de cadenas de texto

Un literal de cadena de texto con formateo es una cadena de texto que comienza por la letra 'F' o 'f' y que contiene campos de reemplazo delimitados por llaves { }. Los campos de reemplazo contienen variables de Python y, opcionalmente, el formato que se debe dar al contenido de la variable.

Si se quiere imprimir una llave, es necesario duplicarla: {{ o bien }}.

Ejemplo:

>>> nombre = 'Guido'
>>> apellido = 'van Rossum'
>>> f'El creador de Python es {nombre} {apellido}'
    'El creador de Python es Guido van Rossum'

>>> numero = 7
>>> f'James Bond es el agente {numero:03d}'
    'James Bond es el agente 007'

Ejercicios

  1. Repite el siguiente ejercicio con tu propio nombre.

    Ejercicio:

    >>> nombre = 'Anselmo'
    >>> f'{nombre:>20}'    # Justificado a la derecha
        '             Anselmo'
    >>> f'{nombre:<20}'    # Justificado a la izquierda
        'Anselmo             '
    >>> f'{nombre:^20}'    # Centrado
        '      Anselmo       '
    >>> f'{nombre:_^20}'   # Centrado con relleno '_'
        '______Anselmo_______'
    
  2. Repite el siguiente ejercicio con la variable número numero = 72. En la última línea cambia el número por tu año de nacimiento.

    Ejercicio:

    >>> nmr = 44
    >>> f'{nmr:10d}'    # Formato decimal entero. Longitud 10
        '        44'
    >>> f'{nmr:+10d}'   # Formato decimal entero con signo. Longitud 10
        '       +44'
    >>> f'{nmr:10X}'    # Formato hexadecimal en mayúsculas. Longitud 10
        '        2C'
    >>> f'{nmr:010b}'   # Formato binario con ceros a la izquierda. Longitud 10
        '0000101100'
    >>> f'{nmr:c}'      # Formato de número a Unicode
        ','
    >>> f'{128512:c}'   # Formato de número a Unicode
        '😀'
    >>> f'{2023:c}'     # Formato de número a Unicode
        'ߧ'
    
  3. Repite el siguiente ejercicio con la variable e = 2,71828. Recuerda que en Python los decimales siempre se separan con un punto, no con una coma.

    Ejercicio:

    >>> pi = 3.14159
    >>> # Número de punto flotante con 10 espacios en total y 3 decimales
    >>> f'{pi:10.3f}'
        '     3.142'
    >>> f'{pi:010.3f}' # Igual que el primero, con ceros a la izquierda
        '000003.142'
    >>> f'{pi:10.0f}'  # Igual que el primero, con cero decimales
        '         3'
    >>> f'{pi:10.4e}'  # Igual que el primero, en notación científica
        ' 3.142e+00'
    
  4. Escribe un programa que pida un carácter por el teclado y que devuelva los siguientes 10 caracteres Unicode.

    Utiliza la función ord() para convertir el carácter en su número Unicode.

    Pista:

    caracter = input('Introduce un caracter: ')
    numero = ord(caracter[0:1])
    for code in range(numero+1, numero+11):
        print(f'Código: ...  caracter: ... ')
    

    Salida:

    Introduce un caracter: ç
    Código: 0x000E8 caracter: è
    Código: 0x000E9 caracter: é
    Código: 0x000EA caracter: ê
    Código: 0x000EB caracter: ë
    Código: 0x000EC caracter: ì
    Código: 0x000ED caracter: í
    Código: 0x000EE caracter: î
    Código: 0x000EF caracter: ï
    Código: 0x000F0 caracter: ð
    Código: 0x000F1 caracter: ñ
    

    Prueba a introducir diferentes caracteres desde el teclado. Prueba a copiar de Internet y pegar símbolos, emojis, letras griegas y cirílicas, etc.

  5. Escribe una función que devuelva el valor de un color RGB en Hexadecimal. Los tres parámetros de la función serán tres números decimales R, G y B (Red, Green y Blue) que deben estar en el rango de 0 a 255. Si algún número es mayor de 255 o menor de 0 se debe recortar al valor permitido.

    Pista: define una función que limite el valor de cada número y lo formatee a formato hexadecimal. Luego puedes definir una segunda función que llame tres veces a la primera función con los valores de los tres colores.

    Recuerda que los valores hexadecimales deben estar en mayúsculas y tener dos cifras obligatoriamente. La manera de convertir una variable a hexadecimal con dos cifras es añadir a la variable el siguiente formato: f'{variable:02X}'.

    Ejemplo:

    rgb(128, 196, 4)
    rgb(500, -5, 64)
    

    Salida:

    80C404
    FF0040