Questo è solo un frammento del mio codice:
print("Total score for %s is %s ", name, score)
Ma voglio che venga stampato:
"Il punteggio totale per (nome) è (punteggio)"
dove nome
è una variabile in una lista e score
è un intero. Questo è Python 3.3 se questo aiuta un po'.
Ci sono molti modi per farlo. Per correggere il vostro codice attuale usando la formattazione %
, dovete passare una tupla:
Passarla come tupla:
print("Il punteggio totale per %s è %s" % (nome, punteggio))
Una tupla con un singolo elemento si presenta come ('questo',)
.
Qui ci sono altri modi comuni per farlo:
Passarla come dizionario:
print("Punteggio totale per %(n)s è %(s)s" % {'n': nome, 's': punteggio})
C'è anche una nuova formattazione delle stringhe, che potrebbe essere un po' più facile da leggere:
Usate la formattazione delle stringhe nel nuovo stile:
print("Il punteggio totale per {} è {}".format(name, score))
Usate la formattazione delle stringhe in stile nuovo con i numeri (utile per riordinare o stampare più volte lo stesso):
print("Il punteggio totale per {0} è {1}".format(nome, punteggio))
Usare la formattazione delle stringhe in stile nuovo con nomi espliciti:
print("Il punteggio totale per {n} è {s}".format(n=nome, s=punteggio))
Concatenare le stringhe:
print("Punteggio totale per " + str(nome) + " è " + str(punteggio))
I due più chiari, secondo me:
Basta passare i valori come parametri:
print("Punteggio totale per", nome, "è", punteggio)
Se non volete che gli spazi vengano inseriti automaticamente da print
nell'esempio precedente, cambiate il parametro sep
:
print("Punteggio totale per ", nome, " è ", punteggio, sep='')
Se state usando Python 2, non sarete in grado di usare gli ultimi due perché "print" non è una funzione in Python 2. Potete, tuttavia, importare questo comportamento da __future__
:
da __future__ import print_function
Usare la nuova formattazione delle stringhe f
in Python 3.6:
print(f'Il punteggio totale per {nome} è {score}')
Mantenendo la semplicità, personalmente mi piace la concatenazione delle stringhe:
print("Total score for " + name + " is " + score)
Funziona sia con Python 2.7 che 3.X.
NOTA: se il punteggio è un int, allora dovreste convertirlo in str:
print("Total score for " + name + " is " + str(score))