2014-06-16 11 views

risposta

18

è necessario mettere i suoi argomenti per la formattazione delle stringhe tra parentesi:

print (... % (name, last_name, gender, age)) 

In caso contrario, Python vedrà solo name come argomento per la formattazione di stringhe e il resto come argomenti della funzione print.


Nota tuttavia che l'utilizzo % per le operazioni di formattazione delle stringhe è visto di buon occhio in questi giorni. L'approccio moderno è quello di utilizzare str.format:

print ("So your name is {}, your last name is {}, you are {} and you are {} years old".format(name, last_name, gender, age)) 
+0

E 'una buona scelta per lasciarsi alle spalle il vecchio metodo di formato della stringa da Python, e utilizzare questo approccio :). Evita un sacco di mal di testa e ti dà più flessibilità quando si tratta di formattare meglio l'output, mettendo spazi vuoti per formare colonne di dati, per esempio. Ecco il documento ufficiale, che ha un sacco di esempi :) -> https://pyformat.info/ – ivanleoncz

6

Hai bisogno di una serie di parentesi:

>>> '%s %s' % 'a', 'b' # what you have 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: not enough arguments for format string 
>>> 
>>> 
>>> '%s %s' % ('a', 'b') # correct solution 
'a b' 

'%s %s' % 'a', 'b' viene valutata come ('%s %s' % 'a'), 'b', che produce un errore nella '%s %s' % 'a' da quando si dispone di un numero di argomenti di identificatori di formato.


print("So your name is %s, your last name is %s, you are %s and you are %s years old" % (name, last_name, gender, age)) 
Problemi correlati