Buona sera a tutti, dovrei realizzare un print formattato con python 3
Dato un valore numerico es: 1.0166 dovrei ottenere con un print 01.0166
di seguito lo script che sto cercando di realizzare
----------------------------------------------------------------------------------------
#!/usr/bin/python3 # -*- coding: utf-8 -*-
var=1.0166
print(str('{:02d}'.format(var)))
-------------------------------------------------------------------------------------------
Quando lo eseguo il terminane mi da il seguente errore
ValueError: Unknown format code 'd' for object of type 'float'
Non capisco perché non funziona e perché mi dice for object of type 'float' se subito dopo print ho usato str
-------------------------------------------------------------------------------------------
Se var=2 funziona correttamente e mi il print mi restituisce 02
perchè? dove sbaglio?
Buona serata e grazie
andrea
On 2017-04-22 19:43, Andrea Congiu wrote:
var=1.0166 print(str('{:02d}'.format(var)))
var è un valore a virgola mobile, mentre il formato 'd' si aspetta un intero.
Prova con 'f': print('{:07.4f}'.format(var))
Thomas
PS: la funzione str() non è necessaria: la funzione str.format() ritorna una stringa (che non deve essere convertita in una stringa ;-))
Ciao Thomas, funziona grazie, ti chiedo una cortesia, potresti spiegarmi il {:07.4f}
Grazie 1000
ciao a
Il 22/04/2017 21:13, Thomas Pircher ha scritto:
On 2017-04-22 19:43, Andrea Congiu wrote:
var=1.0166 print(str('{:02d}'.format(var)))
var è un valore a virgola mobile, mentre il formato 'd' si aspetta un intero.
Prova con 'f': print('{:07.4f}'.format(var))
Thomas
PS: la funzione str() non è necessaria: la funzione str.format() ritorna una stringa (che non deve essere convertita in una stringa ;-)) _______________________________________________ http://lists.lugbz.org/cgi-bin/mailman/listinfo/lugbz-list
On 2017-04-22 20:25, Andrea Congiu wrote:
Ciao Thomas, funziona grazie, ti chiedo una cortesia, potresti spiegarmi il {:07.4f}
: ... inizia la stringa che descrive il formato f ... il valore da formattare è un float 07.4 ... sette caratteri in totale, di cui 4 caratteri dopo la virgola. Se il numero è più corto di 7 caratteri, inserisci dei 0 a sinistra.
Tutta la sintassi è descritta qua, https://docs.python.org/3.4/library/string.html#format-string-syntax Una volta che hai capito il concetto, questa pagina diventa abbastanza comprensibile. :)
Su questa pagina, il formato viene definito come: format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
Nel tuo esempio i valori sono: 0 -> 0 width -> 7 .precision -> 4 type -> f
Prova con questi esempi per vedere cosa fanno i diversi campi
var=1.0166 '{:7.4f}'.format(var) '{:7.0f}'.format(var) '{:.4f}'.format(var) '{}'.format(var)
Thomas
Tutto chiaro e perfetto.
Grazie ancora a
Il 22/04/2017 21:46, Thomas Pircher ha scritto:
On 2017-04-22 20:25, Andrea Congiu wrote:
Ciao Thomas, funziona grazie, ti chiedo una cortesia, potresti spiegarmi il {:07.4f}
: ... inizia la stringa che descrive il formato f ... il valore da formattare è un float 07.4 ... sette caratteri in totale, di cui 4 caratteri dopo la virgola. Se il numero è più corto di 7 caratteri, inserisci dei 0 a sinistra.
Tutta la sintassi è descritta qua, https://docs.python.org/3.4/library/string.html#format-string-syntax Una volta che hai capito il concetto, questa pagina diventa abbastanza comprensibile. :)
Su questa pagina, il formato viene definito come: format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
Nel tuo esempio i valori sono: 0 -> 0 width -> 7 .precision -> 4 type -> f
Prova con questi esempi per vedere cosa fanno i diversi campi
var=1.0166 '{:7.4f}'.format(var) '{:7.0f}'.format(var) '{:.4f}'.format(var) '{}'.format(var)
Thomas _______________________________________________ http://lists.lugbz.org/cgi-bin/mailman/listinfo/lugbz-list