lunedì 3 dicembre 2012

Ancora su format()

Un bel gioco dura poco ma qui si continua con format(), discorso cominciato qua.
Forse non è un gioco tanto bello? Ma poi cambiamo, dai solo per oggi...

Come già detto c'è tutto a questo URL.

Vediamo qualche esempio.


#!/usr/bin/python
# -*- coding: utf-8 -*-

bl = "Luigi"
da = "d'Artagnan"
ju = "Nino"
lt = "Ennio"

st = "I tre moschettieri sono {0}, {1}, {2} e {3},\n{3} è sempre di mezzo!"
stfor = st.format(bl, lt, ju, da)
print stfor

In questo caso abbiamo indicato la posizione delle variabili tra parentesi graffe. Il fatto che fossero stringhe l'ha dedotto l'interprete, proprio come in questo caso (luce.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

C = 300000
l = "luce"
c = "costante"
units = "km/s"

st = "la velocità della {0} è {1} e vale {2} circa {3}.".format(
     l, c, C, units)
print st

Notare come si possono spezzare le righe troppo lunghe (in questo caso per i parametri della funzione format(). OK, ma un fisico avrebbe da ridire: intanto usare le unità di MKS e poi i numeri grossi... (tralasciando la grossolana approssimazione)! Ecco allora lucef.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-

C = 3e8
l = "luce"
c = "costante"
units = "m/s"

st = "la velocità della {0} è {1} e vale {2} circa {3}.".format(
     l, c, C, units)
print st

Mmmh... illeggibile, dai si può fare di meglio! (lucef2.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

C = 3e8
l = "luce"
c = "costante"
units = "m/s"

st = "la velocità della {0} è {1} e vale {2:5.2E} circa {3}.".format(
     l, c, C, units)
print st

Meglio, vero? Se poi uno fa un salto su Wikipedia aggiusta le cose per bene, compito a casa: modificare lo script con C = 299'792'458 m/s.

Tutti sanno che La Risposta è 42, vero. E nelle usuali basi diventa (42.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

risposta = 42

tmpl = 'La Risposta è {0:b}, {0:o}, {0:d}, {0:x}'
print tmpl.format(risposta)

E che dire di questo (pi.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

from math import pi

pi2 = 22.0 / 7
pi3 = 355.0 / 113
nl = '\n'

print pi, nl, pi2, nl, pi3

Vediamo l'approssimazione (pi-app.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

from math import pi

pi2 = 22.0 / 7
pi3 = 355.0 / 113
nl = '\n'
a1 = 100
a2 = 100 * (1 - (pi2 - pi) / pi)
a3 = 100 * (1 - (pi3 - pi) / pi)

tmpl = ' {:8.6f} {:>10.6f}%'
print tmpl.format(pi, a1)
print tmpl.format(pi2, a2)
print tmpl.format(pi3, a3)

Numeri grossi, scritti come si deve, tolti sempre i fisici che non vogliono (bigint.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-

import math

n = 20
bigint = math.factorial(n)
print " {:d}! = {:20,d}".format(n, bigint)
print "o meglio"
print " {:d}! = {:20,d}".format(n, bigint).replace(',', '.')

In questo caso conviene andare a vedere qui

OK, ci sarebbero ancora tanti casi ma, diciamocelo, format() ci ha stufati: basta!

Juhan

E se volete dare un'occhiata alle puntate precedenti (che ormai sono veramente tante), basta andare qui.

Si sente terribilmente la mancanza di Lightuono!!! Perciò faccio un piccolo appello in dialetto calabrese (Calabria nord-ovest): Ehi, ti vo ricogli..Ca ccha ti stamu aspittannu!!! WE WE WE!!! (WE ad libitum).

Alla prossima

1 commento:

  1. Lightuono sì i stuma a spìtè, nèh!
    Anche perché è passato lo screenshot con errore (Rsisposta).

    RispondiElimina