2012-04-02 11 views
7

Sono abbastanza nuovo per Python, quindi sto cercando la mia mano a qualche semplice codice. Tuttavia, in una delle pratiche si suppone il mio codice per visualizzare alcuni numeri in pollici sulla sinistra e la conversione dei numeri sulla destra;Come faccio ad aggiungere spazio tra due variabili, dopo una stampa in Python

count = 1 
conv = count * 2.54 
print count, conv 

Desidero stampare l'output con un po 'di spazio tra di loro;

count = 1 
conv = count * 2.54 
print count,  conv 

Non riesco a capire come farlo. Ho cercato ovunque, ma tutto quello che posso trovare sono persone che cercano di liberarsi dello spazio. Se qualcuno potesse guidarmi nella giusta direzione, sarei grato.

Oh, e ho appena realizzato che sto usando Python 2.7, non 3.x. Non sono sicuro se questo è importante.

risposta

7

Un modo semplice potrebbe essere:

print str(count) + ' ' + str(conv) 

Se avete bisogno di più spazi, è sufficiente aggiungere alla stringa:

print str(count) + ' ' + str(conv) 

Un modo più elaborato, utilizzando la nuova sintassi per la formattazione stringa:

print '{0} {1}'.format(count, conv) 

Oppure utilizzare la vecchia sintassi, limitando il numero di decimali a due:

print '%d %.2f' % (count, conv) 
+0

Nessuno di questi lavori. Il primo modo mi dà un errore di Traceback, e il secondo si comporta come se fosse 'print count, conv' – Hebon

+0

Corretto il primo, per tutti loro: puoi aggiungere quanti spazi hai bisogno in mezzo! –

+0

Il primo non funzionerà perché non è possibile aggiungere un intero a una stringa, né una stringa a un float. Per ottenere più spazio nel secondo e nel terzo esempio, basta inserire il numero richiesto di spazi tra {0} e {1} o% d e% f. – Whatang

4

Utilizzare invece string interpolation.

print '%d %f' % (count,conv) 
+0

che quasi funziona, ma ora ho zeri in più alla fine della mia "conv" variabili 'pollici \t \t Centimetri 1 2.540000' – Hebon

+1

Così poi regolare la'% f' specificazione. –

1

Si tratta di un/modo hacky stupido

print count,  
print conv 
2

In alternativa è possibile utilizzare ljust/rjust per rendere la formattazione più bello.

print "%s%s" % (str(count).rjust(10), conv) 

o

print str(count).ljust(10), conv 
+0

In realtà questa soluzione mi piace più dei parenti di 'printf'. È più facile da capire rispetto a un identificatore di formato 'printf' e fa esattamente quello che dice sulla latta. –

2

Un avvertimento rapido, questa una risposta abbastanza prolisso.

di stampa è difficile a volte, ho avuto qualche problema con esso quando ho iniziato. Quello che vuoi sono alcuni spazi tra due variabili dopo averle stampate giusto? Ci sono molti modi per farlo, come mostrato nelle risposte di cui sopra.

Questo è il tuo codice:

count = 1 
conv = count * 2.54 
print count, conv 

E 'uscita è questa:

1 2.54 

Se volete spazi in mezzo, è possibile farlo nel modo ingenuo attaccando una serie di spazi tra loro. Le variabili count e conv devono essere convertite in tipi di stringhe per concatenarle (unirle) insieme. Questo è fatto con str().

print (str(count) + "   " + str(conv)) 
### Provides an output of: 
1   2.54 

Per fare questo è il modo più nuovo, più divinatorio, usiamo il segno% in combinazione con una lettera per indicare il tipo di valore che stiamo usando. Qui io uso i caratteri di sottolineatura invece degli spazi per mostrare quanti ce ne sono. Il modulo prima degli ultimi valori dice semplicemente a python di inserire i seguenti valori, nell'ordine che abbiamo fornito.

print ('%i____%s' % (count, conv)) 
### provides an output of: 
1____2.54 

ho usato% i per conteggio perché è un numero intero, e% s per conv, perché utilizzando% i in quel caso ci fornirebbe "2" invece di "2.54" Tecnicamente, ho potuto' Ho usato entrambi% s, ma va tutto bene.

Spero che questo aiuti!

-Joseph

P.S. se vuoi complicarti la formattazione, dovresti guardare prettyprint per grandi quantità di testo, come dizionari e liste tuple (importate come pprint), nonché che fa tabulazioni automatiche, spaziatura e altre cianfrusaglie.

Ecco alcune ulteriori informazioni sulle stringhe nei documenti python. http://docs.python.org/library/string.html#module-string

+1

Questo è molto informativo. Grazie per aver dedicato del tempo per spiegarlo. – Hebon

+0

Grazie, sono felice di potermi aiutare! –

0

print str(count) + ' ' + str(conv) - Questo non ha funzionato. Tuttavia, sostituendo + con , opere per me

0

Si dovrebbe usare python esplicita Bandiera conversione PEP-3101

'My name is {0!s:10} {1}'.format('Dunkin', 'Donuts')

'My name is Dunkin Donuts'

o

'My name is %-10s %s' % ('Dunkin', 'Donuts')

'My name is Dunkin Donuts'

https://www.python.org/dev/peps/pep-3101/

Problemi correlati