Dette er bare et utdrag av koden min:
print("Total score for %s is %s ", name, score)
Men jeg vil at den skal skrives ut:
"Total poengsum for (navn) er (poengsum)"
hvor name
er en variabel i en liste og score
er et heltall. Dette er Python 3.3 hvis det hjelper i det hele tatt.
Det er mange måter å gjøre dette på. For å fikse din nåværende kode ved hjelp av %
-formatering, må du sende inn en tuple:
Send den som en tupel:
print("Total poengsum for %s er %s" % (navn, poengsum))
En tupel med ett enkelt element ser ut som ('this',)
.
Her er noen andre vanlige måter å gjøre det på:
Send det som en ordbok:
print("Total poengsum for %(n)s er %(s)s" % {'n': navn, 's': poengsum})
Det er også en ny type strengformatering, som kan være litt lettere å lese:
Bruk ny stil strengformatering:
print("Total poengsum for {} er {}".format(navn, poengsum))
Bruk ny strengformatering med tall (nyttig for å omorganisere eller skrive ut den samme flere ganger):
print("Total poengsum for {0} er {1}".format(navn, poengsum))
Bruk ny strengformatering med eksplisitte navn:
print("Total poengsum for {n} er {s}".format(n=navn, s=poengsum)))
Sammenkjede strenger:
print("Total poengsum for " + str(navn) + " er " + str(poengsum))
De to klareste, etter min mening:
Bare send verdiene som parametere:
print("Total poengsum for", navn, "er", poengsum)
Hvis du ikke vil at mellomrom skal settes inn automatisk med print
i eksemplet ovenfor, endrer du parameteren sep
:
print("Total poengsum for ", navn, " er ", poengsum, sep='')
Hvis du bruker Python 2, vil du ikke kunne bruke de to siste fordi print
ikke er en funksjon i Python 2. Du kan imidlertid importere denne oppførselen fra __future__
:
from __future__ import print_function
Bruk den nye f
-strengformateringen i Python 3.6:
print(f'Total poengsum for {navn} er {poengsum}')
For å holde det enkelt, liker jeg personlig strengkonkatenering:
print("Total score for " + name + " is " + score)
Det fungerer med både Python 2.7 og 3.X.
MERK: Hvis score er en int, bør du konvertere den til str:
print("Total score for " + name + " is " + str(score))