2014-11-14 10 views
10

Così la sintassi sembra essere cambiato da quello che ho imparato in Python 2 ... ecco quello che ho finoravariabili di stampa in pitone 3.4

for key in word: 
    i = 1 
    if i < 6: 
     print ("%s. %s appears %s times.") % (str(i), key, str(wordBank[key])) 

Il primo valore essendo un int, il secondo una stringa e il finale e un int.

Come posso modificare la mia dichiarazione di stampa in modo che stampi correttamente le variabili?

+1

'print()' è una funzione in Python 3, non è una dichiarazione. Circonda tutto nella tua ultima riga (eccetto la parola 'print') tra parentesi e sarai tutto pronto. – MattDMo

+2

@CMac: no, non lo sei. Hai fatto questo: 'print (....)', che restituirà 'None', quindi' None% (one, two, three_strings) '. Vuoi che il 'qualcosa% (uno, due, tre_strings)' sia fatto * all'interno * della chiamata 'print (....)'. –

+0

Leggi [questo] (https://docs.python.org/3/whatsnew/3.0.html) per riferimento futuro ... – MattDMo

risposta

47

La sintassi è cambiato in quel print is now a function. Ciò significa che la formattazione % deve essere fatto all'interno della parentesi:

print("%d. %s appears %d times." % (i, key, wordBank[key])) 

Tuttavia, dal momento che si sta utilizzando Python 3.x., si dovrebbe effettivamente utilizzare il metodo più recente str.format:

print("{}. {} appears {} times.".format(i, key, wordBank[key])) 

Anche se % formattazione non è ufficialmente deprecato (ancora), ma è sconsigliato a favore di str.format e molto probabilmente essere rimosso dalla lingua in una prossima versione (Python 4 forse?).


Solo una nota minore: %d è l'identificatore di formato per gli interi, non %s.

+0

Grazie, ottima risposta – algorhythm

0

Il problema sembra essere un errore di posizione ). Nel vostro campione avete la % al di fuori del print(), si dovrebbe spostare dentro:

Utilizzare questa:

print("%s. %s appears %s times." % (str(i), key, str(wordBank[key]))) 
4

Prova la sintassi formato:

print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415)) 

Uscite:

1. b appears 3.1415 times. 

La funzione di stampa si chiama proprio come qualsiasi altra funzione, con parentesi attorno a tutti i suoi argomenti.

0

È inoltre possibile formattare una stringa in questo modo.

>>> print ("{index}. {word} appears {count} times".format(index=1, word='Hello', count=42)) 

quali uscite

1. Hello appears 42 times. 

Poiché i valori sono chiamati, il loro ordine non importa. Rendere l'esempio di seguito riportato come l'esempio precedente.

>>> print ("{index}. {word} appears {count} times".format(count=42 ,index=1, word='Hello')) 

La stringa di formattazione in questo modo consente di eseguire questa operazione.

>>> data = {'count':42, 'index':1, 'word':'Hello'} 
>>> print ("{index}. {word} appears {count} times.".format(**data)) 
1. Hello appears 42 times.