Escriptura amb format

Utilitzeu els mecanismes que Python proporciona per crear strings amb format.

  • Substitució de {} per paràmetres del mètode str.format()

    En el shell de Python, comproveu els valors successius que pren la variable s. Enteneu el que representen els {}? Què significa el valor que es posa entre les dues claus {0} o {1}?

    >>> s = "nom:"
    >>> s = "nom: {}".format('Pau')
    >>> s = "nom: {}; cognoms: {} {}".format('Pau', 'Marquez', 'Tort')
    >>> s = "nom: {0}; cognoms: {1} {2}".format('Pau', 'Marquez', 'Tort')
    >>> s = "nom: {1}; cognoms: {2} {0}".format('Tort', 'Pau', 'Marquez')
    >>> s = "nom: {2}; cognoms: {1} {0}".format('Tort', 'Pau', 'Marquez')
    >>> nom = 'Andreu'
    >>> s = "nom: {}".format(nom)
    
  • Presentació dels valors:

    Estudieu el mini-llenguatge de formatació dels strings. Feu les següents proves en el shell de Python. Les enteneu? Feu noves proves per assegurar-vos-en. Recordeu que “s” és per strings, “d” per int i “f” per float.

>>> s = "nom: {0:5s}".format('Pau')
>>> s = "nom: {0:10s}".format('Pau')
>>> s = "nom: {:15s}".format('Pau')
>>> s = "nom: {:>10s}".format('Pau')
>>> s = "nom: {:<10s}".format('Pau')
>>> s = "nom: {:^10s}".format('Pau')
>>> s = "nom: {:^10s}".format('Pau')

Prova ara:

>>> s = "nom: {0:5s} edat:{1:2d} pes:{2:4.2f}".format('Pau', 24, 67.89765)
>>> s = "nom: {0:5s} edat:{1:5d} pes:{2:0.2f}".format('Pau', 24, 67.89765)
>>> s = "nom: {0:5s} edat:{1:5d} pes:{2:0.2f}".format('Pau', 24, 67.89765)
  • En el shell de Python, escriviu la paraula “hola” de manera que aparegui com es mostra a continuació: alineada a l’esquerra, amb un caràcter en blanc al davant, amb 2, amb 3 i finalment amb 4.

hola
 hola
  hola
   hola
  • En el shell de Python, escriviu els reals \(34.567, 34.567*10^1, 34.567*10^2, 34.567*10^3, 34.567*10^4\) de tal forma que tots ocupin 9 espais i tinguin 2 decimals. Proveu d’escriure -ho amb 1 sol print. Utilitzeu el caràcter “\n” per crear els salts de línia.

  • En el mòdul p1.py, escriviu la funció escriuformat que donat el nom d’un municipi (un string), la seva superfície (un float) i el seu nombre d’habitants (un enter) retorni el string següent: «municipi: nom sup: superfície habs: habitants», de manera que el nom del municipi ocupi com a mínim 10 espais i estigui alineat a l’esquerra, que la superfície ocupi com a mínim 5 espais i tingui dos decimals i que l’enter ocupi com a mínim 6 espais. La funció ha de passar el següent doctest:

>>> import p1
>>> p1.escriuformat("L'ametlla de Mar", 66.9, 7704)
"municipi: L'ametlla de Mar sup: 66.90 habs:   7704"
>>> p1.escriuformat('Barcelona', 101.9, 1621000)
'municipi: Barcelona  sup: 101.90 habs: 1621000'
>>> p1.escriuformat('Sant Julià de Vilatorta', 15.9, 3076)
'municipi: Sant Julià de Vilatorta sup: 15.90 habs:   3076'
>>> p1.escriuformat('Palanques', 14.32, 33)
'municipi: Palanques  sup: 14.32 habs:     33'