print() formattato

L’output della funzione print() di Python può essere formattato secondo le regole della funzione printf() di C

  • La stringa iniziale “…” specifica l’intero output
  • L’elenco successivo %(…) specifica i dati da inserire nella stringa
  • I caratteri % nella stringa sono dei segnaposto per dei dati da visualizzare (con eventuale formattazione)
  • I dati possono essere variabili/espressioni/funzioni
  • Per formattare i dati si utilizzano i caratteri: + / / . / c / d / e / E / f / Fi / o / s / x / X / 0
  • La tecnica del print formattato è considerata obsoleta rispetto all’uso della nuova funzione format().
    format() può risultare ancora più macchinosa di print…

1

Il segnaposto %s viene sostituito con il valore di una stringa

titolo="Shrek"
print("Ho visto", titolo, "al cinema.")
print("Ho visto %s al cinema." %(titolo))
Ho visto Shrek al cinema.
Ho visto Shrek al cinema.

2

Il segnaposto %c viene sostituito con il valore di un carattere singolo

3

Il segnaposto %i (%d) viene sostituito con il valore di un intero

quanti=4
print("Ho svolto %i esercizi." %(quanti))
Ho svolto 4 esercizi.

4

Il segnaposto %f (%F) viene sostituito con il valore del float specificato.
Di default appare il valore arrotondato alla 6° cifra decimale.

somma=7.5 
print("Ho speso € %f al bar." %(somma))
Ho speso € 7.500000 al bar.

5

La cifra dopo il punto specifica il numero di cifre decimali visibili del valore float

somma=7.5
print("Ho speso € %.2f al bar." %(somma))
Ho speso € 7.50 al bar.

6

Prova più segnaposti con specifiche diverse

x1=0.5
x2=7.5
print("%.1f*%.1f = %.2f" %(x1, x2, x1*x2))
0.5*7.5 = 3.75

7

Il numero dopo % specifica il numero di colonne (con allineamento a destra)

a1=1
a2=12
x1=0.5
x2=75.25
print("%2i %5.2f" %(a1, x1))
print("%2i %5.2f" %(a2, x2))
_1 _0.50
12 75.25

8

Lo 0, zero, forza il riempimento con la cifra zero degli spazi prima del numero

...
print("%04i %5.2f" %(a1, x1))
print("%04i %5.2f" %(a2, x2))
0001  0.50
0012 75.25

9

Il segno , meno, dopo % specifica l’allineamento a sinistra

...
print("%-2i %6.2f" %(a1, x1))
print("%-2i %6.2f" %(a2, x2))
1    0.50
12  75.25

10

Il segno + forza l’output del segno anche quando il valore è positivo

a1=-5
a2=+5
print("[%i, %i]" %(a1, a2))
print("[%+i, %+i]" %(a1, a2))
[-5, 5]
[-5, +5]

11

%% visualizza il carattere %

x=7.5
print("Il %.1f%% del capitale investito." %(x))
Il 7.5% del capitale investito.

12

Un numero può apparire nella notazione scientifica

a=63.5
print("%e" %(a))
print("%E" %(a))
print("%.4e" %(a))
print("%12.4E" %(a))
6.350000e+01
6.350000E+01
6.3500e+01
  6.3500E+01

13

Un numero intero può apparire nelle basi alternative

  • ottale (o)
  • esadecimale minuscolo (x)
  • esadecimale maiuscolo (X)
a=63
print("%o" %(a))
print("%x" %(a))
print("%X" %(a))
77
3f
3F

14

All’interno di print() si può utilizzare end=”…” per rimanere sulla stessa linea

print("..." %(...), end="...")